memcached を使用して django ビューをキャッシュすることをテストしています。memcached が実際に Linux コマンド ラインから何かをキャッシュしているかどうかを確認するにはどうすればよいですか?
14 に答える
この質問は古いことは知っていますが、djangoでmemcachedをテストするためのもう1つの便利なアプローチは次のとおりです。
@Jacobが述べたように、memcachedを非常に冗長なモードで開始できます(デーモンとしてではありません)。
memcached -vv
djangoキャッシュ構成をテストするには、低レベルのキャッシュAPIを使用できます。
まず、Pythonインタープリターを起動し、djangoプロジェクトの設定を読み込みます。
python manage.py shell
シェルから、低レベルのキャッシュAPIを使用してmemcacheサーバーをテストできます。
from django.core.cache import cache cache.set('test', 'test value')
キャッシュ構成が正しい場合は、次のような出力がmemcacheに表示されます。
<32 set :1:test 0 300 10
>32 STORED
公式の perl スクリプトを使用できます。
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 サーバーに着信するタイミングがわかります。
コマンド ラインから、次のコマンドを試してください。
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"
Bash では、次のコマンドで memcache の統計を確認できます。
exec 3<>/dev/tcp/localhost/11211; printf "stats\nquit\n" >&3; cat <&3
キャッシュをフラッシュするには、次のmemflush
コマンドを使用します。
echo flush_all >/dev/tcp/localhost/11211
統計が増加したかどうかを確認します。
キャッシュされたすべてのオブジェクトをダンプするには、memdump
またはmemcdump
コマンド ( memcached
/libmemcached
パッケージの一部)を使用します。
memcdump --servers=localhost:11211
また:
memdump --servers=localhost:11211
PHP を使用している場合、 がサポートされているかどうかを確認するには、次の方法で確認してくださいphp -i | grep memcached
。
トレース
どの memcached プロセスが正確に処理しているかを確認するには、ネットワーク スニファーまたはデバッガー ( strace
Linux やUnix dtrace
/ dtruss
OS X など) を使用できます。以下の例を確認してください。
ストレース
sudo strace -e read,write -fp $(pgrep memcached)
出力をより適切な方法でフォーマットするには、以下を確認してください:シェル内の strace をプレーン テキストに解析する方法
ドトラス
Dtruss は、Unix システムで使用できる dtrace ラッパーです。次のように実行します。
sudo dtruss -t read -fp $(pgrep memcached)
Tcpdump
sudo tcpdump -i lo0 -s1500 -w- -ln port 11211 | strings -10
以下のスクリプトで memcached または任意のサーバーをテストできます
lsof -i :11211 | grep 'LISTEN'>/dev/null 2>/dev/null;echo $?
0 を返す場合、サーバーは実際に実行されています。1 の場合はそうではありません。サーバーが実際に何らかのポートで実行されていることを知りたい場合は、次のスクリプトを使用します。
lsof -i :11211 | grep 'LISTEN'>/dev/null 2>/dev/null;
if [ $? -eq 0]; then
echo "Your memcache server is running"
else
echo "No its not running"
fi
curl を使用してページを数百回フェッチし、結果を計測できますか? これを行っている間、重い CPU/ディスク負荷をシミュレートするプロセスをサーバー上で実行することもできます。
私はメザニンを使用していますが、うまくいった唯一の答えはジェイコブスの答えでした。デーモンを停止して実行するmemcached -vv