2011-10-03 4 views
2

나는 이것을 읽었습니다 - How does the lazy expiration mechanism in memcached operate?지연된 만료 Memcached

그래서 질문이 있습니다. memcached의 모든 항목을 주기적으로 확인하고 만료 된 항목이 제거되도록 각 항목에 대한 GET 요청을 보내는 프로그램을 직접 만들 수 있습니까?

내가 원하는 이유는 Memcached에서 사용 된 비율을 적절하게 제어하기를 원하기 때문입니다. 그 백분율이 100 %에 가까워지면 더 많은 메모리를 추가해야하는지, 또는 만료 된 항목이 많아 걱정하지 않아도되는지 절대 확신 할 수 없습니다.

내가 PHP를 사용하고, 불행하게도이 (단서 이유) memcached와의 모든 항목을 반환하지 않습니다 : 당신이 더 많은 메모리를 추가해야하는 경우

$allSlabs = $memcache->getExtendedStats('slabs'); 
    foreach ($allSlabs as $server => $slabs) { 
     foreach ($slabs as $slabId => $slabMeta) { 
      $cdump = $memcache->getExtendedStats('cachedump', (int)$slabId); 
      foreach ($cdump as $keys => $arrVal) { 
       foreach ($arrVal as $key => $v) { 
        echo $key, "\n"; 
       } 
      } 
     } 
    } 
+0

확실하지 않지만 "사용 된 백분율"만료되지 않은 항목 만 검사한다고 가정합니다. 캐시가 100 %에 가까운 적이 없었지만 만료 된 항목이 사용으로 계산됩니다. -stats, 더 커져야 만하고 그렇지 않습니다. %가 변동합니다 (up 및 down). 활성 퍼지가 전혀 필요하지 않다고 생각합니까? LRU는 만료 된 항목을 교체하여 _after_ 만 사용하는 것이 합리적입니다. – Nanne

+0

일부 MB에 대한 정크를 추가하고 만료 날짜 이후 %가 여전히 높은지 확인합니다. 감사합니다. – Nuno

+0

아직까지 감소하지 않았습니다. 그것은 10 분 후에 감소하기로되어있었습니다. 그러나 나는 당신이하는 말을 알고 있습니다. 왜냐하면 나는 그것이 나에게도 변동하는 것을 보았 기 때문입니다. 그러나 시간이 좀 걸릴 수 있습니다. – Nuno

답변

2

당신은 단지 확인하기 위해 퇴거 속도를 사용해야합니다. memcached가 다음 객체를 저장할 공간을 만들기 위해 객체를 버려야한다면, 제거 된 통계가 증가 할 것입니다. (그리고 "재생 된"통계를보고 항목을 저장할 메모리를 회수하여 새로운 항목을 저장할 수있는 횟수를 확인할 수 있습니다.

코드는 콘텐츠를 덤프하여 서버를 다운시킬 수 있습니다

+1

내 서버에 "재생 된"통계가 표시되지 않는 것 같습니다. 나는 퇴거에 대해서 알고있다. 나는이 순간에 ("좋은") "0"을 가지고 있지만, 나의 생각은 그것들을 전혀 피하는 것이었다. 도와 줘서 고마워! – Nuno