-v
、-vv
、または -vvv
オプションを使用して冗長モードを有効にすると、memcached が出力する情報に実行中の操作の詳細が追加されます。
冗長オプションを指定しないと、通常は memcached の正常な動作中に出力が生成されません。
-
-v
使用時の出力もっとも低い冗長レベルでは、次が表示されます。
エラーおよび警告
一時的なエラー
プロトコルおよびソケットのエラー (使用可能な接続の使い果たしなど)
-
登録された個々のクライアント接続 (使用されているソケットディスクリプタ番号とプロトコルを含む)。
例:
32: Client using the ascii protocol 33: Client using the ascii protocol
ソケットディスクリプタはクライアントが接続されている間だけ有効になります。永続的ではない接続は表示されない場合があります。
このレベルで出力されるエラーメッセージの例を次に示します。
<%d send buffer was %d, now %d Can't listen for events on fd %d Can't read from libevent pipe Catastrophic: event fd doesn't match conn fd! Couldn't build response Couldn't realloc input buffer Couldn't update event Failed to build UDP headers Failed to read, and not due to blocking Too many open connections Unexpected state %d
-
-vv
使用時の出力2 番目の冗長レベルを使用すると、プロトコルの動作、更新されたキー、チャンクとネットワークの動作および詳細に関するより詳しい情報が提供されます。
この冗長レベルで memcached を起動すると、最初に個々のスラブクラスのサイズ、チャンクサイズ、およびスラブあたりのエントリ数が表示されます。これらは、スラブが割り当てられたことを示すのではなく、データが追加されたときに作成されるスラブを示します。情報を送信するために使用される待機キューおよびバッファーに関する情報も表示されます。デフォルトのメモリーおよび増大係数を含む TCP/IP ベースシステムに関して生成された出力の例を次に示します。
shell> memcached -vv slab class 1: chunk size 80 perslab 13107 slab class 2: chunk size 104 perslab 10082 slab class 3: chunk size 136 perslab 7710 slab class 4: chunk size 176 perslab 5957 slab class 5: chunk size 224 perslab 4681 slab class 6: chunk size 280 perslab 3744 slab class 7: chunk size 352 perslab 2978 slab class 8: chunk size 440 perslab 2383 slab class 9: chunk size 552 perslab 1899 slab class 10: chunk size 696 perslab 1506 slab class 11: chunk size 872 perslab 1202 slab class 12: chunk size 1096 perslab 956 slab class 13: chunk size 1376 perslab 762 slab class 14: chunk size 1720 perslab 609 slab class 15: chunk size 2152 perslab 487 slab class 16: chunk size 2696 perslab 388 slab class 17: chunk size 3376 perslab 310 slab class 18: chunk size 4224 perslab 248 slab class 19: chunk size 5280 perslab 198 slab class 20: chunk size 6600 perslab 158 slab class 21: chunk size 8256 perslab 127 slab class 22: chunk size 10320 perslab 101 slab class 23: chunk size 12904 perslab 81 slab class 24: chunk size 16136 perslab 64 slab class 25: chunk size 20176 perslab 51 slab class 26: chunk size 25224 perslab 41 slab class 27: chunk size 31536 perslab 33 slab class 28: chunk size 39424 perslab 26 slab class 29: chunk size 49280 perslab 21 slab class 30: chunk size 61600 perslab 17 slab class 31: chunk size 77000 perslab 13 slab class 32: chunk size 96256 perslab 10 slab class 33: chunk size 120320 perslab 8 slab class 34: chunk size 150400 perslab 6 slab class 35: chunk size 188000 perslab 5 slab class 36: chunk size 235000 perslab 4 slab class 37: chunk size 293752 perslab 3 slab class 38: chunk size 367192 perslab 2 slab class 39: chunk size 458992 perslab 2 <26 server listening (auto-negotiate) <29 server listening (auto-negotiate) <30 send buffer was 57344, now 2097152 <31 send buffer was 57344, now 2097152 <30 server listening (udp) <30 server listening (udp) <31 server listening (udp) <30 server listening (udp) <30 server listening (udp) <31 server listening (udp) <31 server listening (udp) <31 server listening (udp)
この冗長レベルを使用すると、異なるメモリー割り当てを含むスラブに対して使用される増大係数の効果を効果的にチェックできます。また、その結果を使用して、キャッシュに格納するデータに合わせて増大係数を調整できます。たとえば、増大係数を 4 に設定した (各スラブのサイズが 4 倍になった) 場合:
shell> memcached -f 4 -m 1g -vv slab class 1: chunk size 80 perslab 13107 slab class 2: chunk size 320 perslab 3276 slab class 3: chunk size 1280 perslab 819 slab class 4: chunk size 5120 perslab 204 slab class 5: chunk size 20480 perslab 51 slab class 6: chunk size 81920 perslab 12 slab class 7: chunk size 327680 perslab 3 ...
この冗長レベルでは、キャッシュの使用中に、キーおよびその他の情報の格納とリカバリに関する詳細情報も出力されます。一般的な設定/取得および増分/減分操作中の出力の例を次に示します。
32: Client using the ascii protocol <32 set my_key 0 0 10 >32 STORED <32 set object_key 1 0 36 >32 STORED <32 get my_key >32 sending key my_key >32 END <32 get object_key >32 sending key object_key >32 END <32 set key 0 0 6 >32 STORED <32 incr key 1 >32 789544 <32 decr key 1 >32 789543 <32 incr key 2 >32 789545 <32 set my_key 0 0 10 >32 STORED <32 set object_key 1 0 36 >32 STORED <32 get my_key >32 sending key my_key >32 END <32 get object_key >32 sending key object_key1 1 36 >32 END <32 set key 0 0 6 >32 STORED <32 incr key 1 >32 789544 <32 decr key 1 >32 789543 <32 incr key 2 >32 789545
クライアント通信中は、各行の最初の文字は情報の流れの方向を示しています。< はクライアントから memcached サーバーへの通信、> はクライアントへの通信をそれぞれ示します。数字は、この接続のソケットディスクリプタを表す数値です。
-
-vvv
使用時の出力この冗長レベルには、クライアントとの間でコンテンツの読み取りおよび書き込みを行なっている間の、イベントライブラリのさまざまな接続状態の遷移が含まれます。これは、クライアント通信の問題を診断して識別するために使用します。たとえば、この情報を使用して、クライアント操作の読み取り中または操作が返されて完了する前に memcached がクライアントに情報を返すのに長い時間がかかっているかどうかを判定できます。設定操作の一般的なシーケンスの例を次に示します。
<32 new auto-negotiating client connection 32: going from conn_new_cmd to conn_waiting 32: going from conn_waiting to conn_read 32: going from conn_read to conn_parse_cmd 32: Client using the ascii protocol <32 set my_key 0 0 10 32: going from conn_parse_cmd to conn_nread > NOT FOUND my_key >32 STORED 32: going from conn_nread to conn_write 32: going from conn_write to conn_new_cmd 32: going from conn_new_cmd to conn_waiting 32: going from conn_waiting to conn_read 32: going from conn_read to conn_closing <32 connection closed.
memcached のすべての冗長レベルは、問題のデバッグ中または調査中に使用するために設計されています。生成される情報 (特に -vvv
を使用したとき) の量は、(特に負荷の高いサーバーでは) 重要です。エラー情報を (特にディスクに) 書き出すと、memcached を使用することで達成したパフォーマンス向上の一部が打ち消される可能性があります。そのため、本番環境や配備環境での使用は推奨されません。