[django] memcached가 어떤 일을하고 있는지 어떻게 알 수 있습니까?

장고 뷰를 캐시하기 위해 memcached를 사용하여 테스트 중입니다. memcached가 실제로 Linux 명령 줄에서 어떤 것을 캐시하고 있는지 어떻게 알 수 있습니까?



답변

이 질문이 오래되었다는 것을 알고 있지만 여기에 django로 memcached를 테스트하는 또 다른 유용한 접근 방식이 있습니다.

@Jacob이 언급했듯이 매우 자세한 모드 (데몬이 아님)에서 memcached를 시작할 수 있습니다.

memcached -vv

django 캐시 구성을 테스트하려면 저수준 캐시 API를 사용할 수 있습니다.

  1. 먼저 python 인터프리터를 시작하고 django 프로젝트 설정을로드합니다.

    python manage.py shell
    
  2. 셸에서 저수준 캐시 API를 사용하여 Memcache 서버를 테스트 할 수 있습니다.

    from django.core.cache import cache
    cache.set('test', 'test value')
    

캐시 구성이 올 바르면 Memcache에 다음과 유사한 출력이 표시되어야합니다.

<32 set :1:test 0 300 10
>32 STORED


답변

공식 펄 스크립트를 사용할 수 있습니다.

memcached-tool 127.0.0.1:11211 stats

또는 telnet 및 stats 명령을 사용하십시오. 예 :

# telnet localhost [memcacheport]
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
stats
STAT pid 2239
STAT uptime 10228704
STAT time 1236714928
STAT version 1.2.3
STAT pointer_size 32
STAT rusage_user 2781.185813
STAT rusage_system 2187.764726
STAT curr_items 598669
STAT total_items 31363235
STAT bytes 37540884
STAT curr_connections 131
STAT total_connections 8666
STAT connection_structures 267
STAT cmd_get 27
STAT cmd_set 30694598
STAT get_hits 16
STAT get_misses 11
STAT evictions 0
STAT bytes_read 2346004016
STAT bytes_written 388732988
STAT limit_maxbytes 268435456
STAT threads 4
END


답변

memcache를 데몬이 아니라 정상으로 시작하므로 memcached -vv매우 자세하게 실행하십시오 . get 및 set가 memcache 서버에 들어올 때 볼 수 있습니다.


답변

memcache 작업을 테스트하는 간단한 방법은 제공되는 모든 페이지에 주석 처리 된 타임 스탬프를 몰래 넣는 것입니다. 타임 스탬프가 페이지에 대한 여러 요청에서 동일하게 유지되면 페이지가 Memcache에 의해 캐시 된 것입니다.

Django 설정에서 파일 시스템에서 파일 캐시를 사용하도록 캐시 메커니즘을 설정했습니다 (정말 느림).하지만 페이지를 조회 한 후에는 파일 경로에 실제 캐시 파일이 있는지 확인할 수 있으므로 캐시가 Django에서 활성화되었습니다.

이 두 단계를 모두 사용하여 캐싱 문제를 해결했습니다. 실제로 Django에서 캐싱을 올바르게 설정하지 않았습니다. 캐싱을 활성화하는 새로운 방법은 ‘django.middleware.cache.CacheMiddleware’미들웨어를 사용하는 것입니다 (첫 번째 / 마지막 미들웨어 설정이어야하는 두 개의 미들웨어 조각이있는 미들웨어가 아닙니다.)


답변

Memcached는 실제로 로그 파일을 수동으로 다시 시작하지 않고도 자체적으로 로그 파일에 쓸 수 있습니다. /etc/init.d/memcached(init 스크립트 /usr/lib/systemd/system/memcached.serviceEL7 +에, 우)는 지정된 옵션 memcached를 호출 할 수 있습니다 /etc/memcached.conf(또는 /etc/sysconfig/memcachedEL5 +에). 이러한 옵션에는 자세한 정보 및 로그 파일 경로가 있습니다.

간단히 말해서이 두 줄을 conf / sysconfig 파일에 추가 (또는 주석 해제)하면됩니다.

-vv
logfile /path/to/log

service memcached restart(EL3-7) 또는 /etc/init.d/memcached restart(debuntus)를 사용 하여 데몬을 다시 시작합니다.

그런 다음 tail -f /path/to/log예를 들어 같은 전통적인 방식으로이 로그를 모니터링 할 수 있습니다 .


답변

명령 줄에서 아래 명령을 시도하십시오.

echo stats | nc 127.0.0.1 11211

아무것도 반환하지 않으면 Memcache가 실행되고 있지 않은 것입니다. 그렇지 않으면 가동 시간 (및 적중 횟수)을 포함한 많은 통계를 반환해야합니다.

참조 문서는 여기에 있습니다.
https://www.percona.com/blog/2008/11/26/a-quick-way-to-get-memcached-status/

2 초마다 변경 사항을 확인하려면 :

watch "echo stats | nc 127.0.0.1 11211"


답변

확장 노드의 응답 socat UNIX-CONNECT:/var/run/memcached.sock STDIN을 위해 유닉스 소켓을 디버그하는 데 사용할 수 있습니다 .

예:

$ socat UNIX-CONNECT:/var/run/memcached.sock STDIN
stats
STAT pid 931
STAT uptime 10
STAT time 1378574384
STAT version 1.4.13
STAT libevent 2.0.19-stable
STAT pointer_size 32
STAT rusage_user 0.000000
STAT rusage_system 0.015625
STAT curr_connections 1
STAT total_connections 2
STAT connection_structures 2