2012-05-14 4 views
0

우리는 약 20 개의 응용 프로그램에 의해 공유되는 memcached 서버를 가지고 있습니다. 웹 응용 프로그램 중 하나 (또는 ​​유틸리티 응용 프로그램 중 하나)가 flush_all 명령을 주기적으로 실행하고 있습니다. 빈도가 무작위로 보이거나 적어도 패턴을 아직 보지 못했습니다. 한 시간에 약 10 번 발생합니다.flush_all 명령을 실행하는 것을 어떻게 결정해야합니까?

여기에 문지르 기가 있습니다. 나는이 일을하는 앱을 파악하는 좋은 방법을 알 수 없다. memcacehd 로그는 전혀 도움이되지 않습니다. 여기까지 내가 한 일은 다음과 같습니다. * grep all source code - memcached 라이브러리 이외에는 어디에서나이 명령을 실행할 수 없습니다. * memcached에서 자세한 로깅 (-vv)을 사용하도록 설정합니다. 명령이 실행되는 것을 볼 수 있지만 로그에 명령이 실행되는 위치에 대한 정보가 표시되지 않습니다. * 관리적으로 사용 중지하는 방법을 조사하십시오. memcached에 대한 승인되지 않은 소스 패치가 없어도 좋은 방법을 찾을 수 없습니다.

이 문제가 발생한 사람이 있습니까? 나는 이것이 우리 웹 앱 중 하나에서 오는 것이라고 가정하고 있지만 다른 곳에서도 가능하다고 생각합니다. 어떤 제안?

내 다음 단계는 두 번째 memcached 서버를 설정하고 응용 프로그램을 하나씩 이동하는 것입니다 (속도가 느리고 시간이 오래 걸림). 더 좋은 방법이 있어야합니다.

+0

한 가지 더 빠른 메모 : 캐시가 꽉 차서 이러한 문제가 발생하지 않는다고 확신합니다. 이를 테스트하기 위해 서버를 재시동하여 모든 것을 지우고 서버가 최대 할당 램에 도달하기 전에 플러시가 발생했는지 확인했습니다. – genexp

+0

답변이 필요한지 확실하지 않지만 gdb를 memcached 프로세스에 연결하고 flush_all이 처리되는 함수/줄에 중단 점을 설정할 수 있습니다. 또는 많은 메모리가있는 wireshark를 사용하십시오. –

답변

0

조금 늦게, 그러나 경우에 다른 사람이이 안타 ...

내가 여러 memcache에 프록시를 설정 제안하고 다른 하나를 사용하는 각 응용 프로그램을 구성 할 것입니다. 내가 발견 한 첫 번째 프록시는 twemproxy이었습니다. 얼마나 좋은지 전혀 모릅니다.

그런 다음 프록시 로그를 사용하여 명령을 실행하는 응용 프로그램을 식별 할 수 있습니다.

관련 문제