memcached가 슬래브에서 사용하지 않은 페이지를 해제하지 않아 다른 슬래브에서 제거됨

memcached가 슬래브에서 사용하지 않은 페이지를 해제하지 않아 다른 슬래브에서 제거됨

memcached에 할당된 메모리가 충분하지만 memcached가 다른 슬래브에서 사용되지 않은 페이지를 해제/재조정하지 않는 경우에도 특정 슬래브에서 제거가 발생하는 상황이 발생합니다.

memcached 버전: 1.4.15

다음은 memcached-tool-ng(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 %

페이지 수와 개체 수를 보면 더 높은 슬래브에서 많은 메모리가 낭비되고 있음이 분명합니다. 슬래브 18 또는 19를 고려하면 슬래브 18에는 객체가 26개만 있습니다. 이러한 객체를 수용하기 위해 최대 13페이지가 필요할 수 있다고 가정하면 할당된 총 페이지는 2604입니다.

우리 애플리케이션은 일반적으로 모든 개체에 대해 TTL을 480초 이하로 설정하지만 높은 슬래브의 최대 수명이 너무 높고 밀도가 높은(낮은) 슬래브에서 많은 제거가 발생합니다.

Memcached가 상위 슬래브에서 사용되지 않은 페이지를 회수하지 않고 더 많은 페이지가 필요한 슬래브에 할당하지 않는 이유를 누군가 설명할 수 있습니까?

관련 정보