Memcached no libera páginas no utilizadas de una losa y provoca desalojos de otras losas

Memcached no libera páginas no utilizadas de una losa y provoca desalojos de otras losas

Nos encontramos con una situación en la que se producen desalojos en ciertas losas, incluso si hay suficiente memoria asignada a Memcached, pero Memcached no libera ni reequilibra las páginas no utilizadas de otras losas.

versión memcached: 1.4.15

Aquí está el resultado de memcached-tool-ng (herramienta de terceros con un poco más de información sobre memstats).

   #  Item_Size    Max_age   Pages     Count   Used Mem     To Store   Efficiency  Evicted  Evict_Time  OOM
  10       6.9K      1583s       1         2    1.00 MB     12.99 KB       1.27 %        0           0   0
  11      11.1K       480s      83      1890   83.00 MB     17.38 MB      20.94 %   282249         480   0
  12      17.8K       479s      57      1156   57.00 MB     19.67 MB      34.51 %  6959481         479   0
  13      28.4K       480s    1052      7277    1.03 GB    136.18 MB      12.94 %   941078         480   0
  14      45.5K        27s     562        17  562.00 MB    536.25 KB       0.09 %   114861          22   0
  15      72.7K        21s     574         2  574.00 MB    125.03 KB       0.02 %     2615          18   0
  16     116.4K     30055s     790       300  790.00 MB     25.96 MB       3.29 %    34786          22   0
  17     186.2K     30230s    1823      1433    1.78 GB    187.89 MB      10.31 %    21823          22   0
  18     297.9K     30201s    2604        26    2.54 GB      4.91 MB       0.19 %     1373          25   0
  19     476.7K     35234s    1322         2    1.29 GB    615.39 KB       0.05 %        0           0   0
  20    1024.0K         0s       2         0    2.00 MB          0 b       0.00 %        0           0   0

Total used memory: 8.66 GB (for 393.24 MB of data)
Global efficiency:  4.43 %

Total used memory: 8.66 GB (for 393.24 MB of data)
Global efficiency:  4.43 %

Al observar el recuento de páginas y el recuento de objetos, es evidente que se desperdicia mucha memoria en losas superiores. Considere la losa 18 o 19, en la losa 18 solo hay 26 objetos, suponiendo que necesitemos un máximo de 13 páginas para acomodar estos objetos, el total de páginas asignadas es 2604.

Nuestra aplicación generalmente establece un TTL de no más de 480 segundos en cualquier objeto; sin embargo, la edad máxima en las losas superiores es demasiado alta y las losas más densas (inferiores) también están experimentando desalojos de lotes.

¿Alguien puede explicar por qué Memcached no recupera las páginas no utilizadas de losas superiores y las asigna a las losas donde se requieren más páginas?

información relacionada