87

memcached を使用して django ビューをキャッシュすることをテストしています。memcached が実際に Linux コマンド ラインから何かをキャッシュしているかどうかを確認するにはどうすればよいですか?

4

14 に答える 14

49

この質問は古いことは知っていますが、djangoでmemcachedをテストするためのもう1つの便利なアプローチは次のとおりです。

@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
于 2011-08-08T23:18:51.157 に答える
49

公式の 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
于 2009-03-10T19:59:11.070 に答える
42

memcache をデーモンとしてではなく通常の方法で起動しますmemcached -vv。get と set が memcache サーバーに着信するタイミングがわかります。

于 2009-04-09T16:35:52.587 に答える
8

コマンド ラインから、次のコマンドを試してください。

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"
于 2015-08-07T12:22:21.240 に答える
6

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 プロセスが正確に処理しているかを確認するには、ネットワーク スニファーまたはデバッガー ( straceLinux やUnix dtrace/ dtrussOS 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
于 2016-04-12T17:18:02.373 に答える
3

以下のスクリプトで 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
于 2013-08-25T22:20:42.867 に答える
1

curl を使用してページを数百回フェッチし、結果を計測できますか? これを行っている間、重い CPU/ディスク負荷をシミュレートするプロセスをサーバー上で実行することもできます。

于 2009-03-10T19:37:19.187 に答える
0

私はメザニンを使用していますが、うまくいった唯一の答えはジェイコブスの答えでした。デーモンを停止して実行するmemcached -vv

于 2013-12-09T17:37:39.143 に答える