指標に関していつもググってばっかりいたので、まとめてみました。
ツッコミ大歓迎。
CPU usage
| name | detail |
|---|---|
| User | ユーザ空間(アプリケーション)でCPUが使われた時間の割合 |
| Nice | 優先度を変更された(nice値が変更された)プロセスにより、ユーザ空間でCPUが使われた時間の割合 |
| System | カーネル空間でCPUが使われた時間の割合 |
| Idle | CPUが何も処理をせずに待機していたCPUの時間の割合(ディスクI/O待ち以外) |
| Wait(iowait) | CPUがディスクI/O、またはネットワークI/Oの結果を待っていた時間の割合(I/O処理中で、その終了を待機している時間) |
| Intr | 割り込み |
| SoftIRQ | ソフト割り込み |
| Steal | 仮想サーバがCPUを使って待たされていた時間の割合 |
http://blog.suusuke.info/2011/10/24/365/
hiboma/Linuxカーネル解読室-3-1.md at master · hiboma/hiboma · GitHub
O'Reilly Japan - 詳解 システム・パフォーマンス
の 6.3.6 6.6.3 も合わせて参照
Memory Usage
| name | detail |
|---|---|
| used | 使用している物理メモリ量 |
| buffer | ファイルなどのメタデータをキャッシュしている物理メモリ量 |
| cached | ページキャッシュに使用されているメモリ量 |
| avail real | 利用可能な物理メモリの量 |
| total real | 総物理メモリの量 |
| used swap | Swap領域で使用している量 |
cached も buffers も空きメモリの一部 状況に応じてflushされる
Nginx
| name | detail |
|---|---|
| Reading | nginxはリクエストヘッダーを読み込んでいる数 |
| Writing | nginxはリクエストボディーを読み込んでいる、リクエストを処理中、またはクライアントへ返信している数。upstreamから結果を受け取ってクライアントに返し中なのか、upstreamからの回答待ちであるかが区別されてないっぽいのが困る。 |
| Waiting | リクエスト処理を待っているクライアントのコネクション数 (idle client connections waiting for a request.) keep-aliveの接続数 |
http://wiki.nginx.org/HttpStubStatusModule#stub_status
MySQL
変数の参照はここ
MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.6 サーバーステータス変数
MySQL Threads
| name | detail |
|---|---|
| Cached | キャッシュされているスレッド数(スレッドは使いまわされる) |
| Connected | 現在の接続数 |
| Running | スリープ状態になっていないスレッドの数 |
Threads_created 接続を処理するために生成されたスレッド数(この値が増えまくるなら、cached が足りていない)
Threads_cached + Threads_connected が thread_cache_sizeの値より小さければ想定内。
MySQLのスレッドとか接続数とか - @bayashi Wiki
MySQL Processlist
| name | detail |
|---|---|
| State Closing Tables | 変更されたテーブルデータをディスクにフラッシュし、使用されたテーブルを閉じているスレッド数 |
| State Copying To Tmp Tables | メモリー内の一時テーブルにコピーしているスレッド数 |
| State End | ALTER TABLE、CREATE VIEW、DELETE、INSERT、SELECT、または UPDATE ステートメントの最後、ただしクリーンアップの前に発生しまる状態のスレッド数 |
| State Freeing Items | コマンドの実行を完了したスレッド数、通常、この状態のあとは cleaning up になります |
| State Init | ALTER TABLE、DELETE、INSERT、SELECT、または UPDATE ステートメントの初期化の前に発生する状態のスレッド数 |
| State Locked | 別のクエリーによってロックされているスレッド数 |
| State Login | クライアントが正常に認証されるまでの初期状態のスレッド数 |
| State Reading From Net | ネットワークからパケットを読み込んでるスレッド数 |
| State Sending Data | SELECT ステートメントのために行を作成し、また、クライアントにデータを送っているスレッド数 |
| State Sorting Result | |
| State Statistics | クエリー実行計画を開発する統計を計算しているスレッド数 |
| State Updating | 更新する行を探していて、それらを更新しているスレッド数 |
| State Writing To Net | ネットワークにパケットを書き込んでいるスレッド数 |
| State None | Stateのないスレッド数 例えば SLEEP中のスレッド |
| State Other |
http://mysql.stu.edu.tw/doc/refman/5.1-olh/ja/general-thread-states.html
MyISM Indexes
| name | detail |
|---|---|
| Key Read Requests | |
| Key Reads | |
| Key Writes Requests | |
| Key Writes |
MySQL Handlers
クエリの I/O 動作
| name | detail |
|---|---|
| Handler Write | INSERTの回数 |
| Handler Update | UPDATEの回数 |
| Handler Delete | DELETEの回数 |
| Handler Read First | テーブルやインデックスの全件検索(インデックスフルスキャン)の際にまず最初に先頭レコードの取得するが、その回数。フルスキャンが多いとこの回数が増える。(要チューニング) |
| Handler Read Key | インデックスに基づく読み込み回数。これが多い場合は適切にインデックスが貼られている。 |
| Handler Read Next | インデックスに基づいて行を特定した後、後続の行を読んだ回数。範囲指定のインデックススキャンの場合に増えます。 |
| Handler Read Prev | インデックスに基づいて行を特定した後、その前の行を読んだ回数。範囲指定のインデックススキャンの場合に増えます。 |
| Handler Read Rnd | 固定位置に基づくレコード読んだの回数(handler::rnd_pos()が呼ばれた回数)。固定位置に基づくレコードの読み込みとは、Random Readのこと。結果のソートを必要とするクエリを多く実行すると、この値が大きくなる。(要チューニング) |
| Handler Read Rnd Next | データファイルでの次のレコードを読み取った回数。 テーブルスキャンが多く実行されると、この値が大きくなる。(要チューニング) |
MySQL Select Types
| name | detail |
|---|---|
| Select Full Join | インデックスのないカラムで JOINした回数 |
| Select Full Range Join | 範囲指定の効果はあるがインデックスは使わず JOINした回数 |
| Select Range | WHERE などの指定によって範囲が限定された探索を行った回数 |
| Select Range Check | インデクッスなしのJOIN数 |
| Select Scan | テーブル(またはインデックスでも)の先頭行から全件検索(スキャン)をした回数 |
JOINに関してはEXPLAINしてtypeがeq_refになるようにする。
MySQL Sorts
| name | detail |
|---|---|
| Sort Rows | ソートしたレコード数 |
| Sort Range | 範囲検索ソートの回数 |
| Sort Merge Passes | ソートで必要としたマージパスの回数 |
| Sort Scan | テーブルスキャンでソートした回数 |
MySQL Temporary Objects
| name | detail |
|---|---|
| Created Tmp Tables | 作成した一時テーブルの数 |
| Created Tmp Disk Tables | ディスク上に作成した一時テーブルの数 |
| Created Tmp Files | 作成した一時ファイルの数 |
sort_buffer_sizeを超える大きなORDER BYなどで作成される。
漢(オトコ)のコンピュータ道: Using filesort
MySQL Transaction Handle
| name | detail |
|---|---|
| Handler Commit | コミットの要求数 |
| Handler Rollback | ロールバックの要求数 |
| Handler Savepoint | セーブポイントの要求数 |
| Handler Savepoint Rollback | セーブポイントロールバックの要求数 |
Cache hit rate
| name | detail |
|---|---|
| key cache | |
| query cache | |
| table lock immediate | |
| thread cache | |
| tmp table on memory |
Dirty page rate
buffer pool の page のうち disk に flush されてない page の比率
ここが増加していると、diskへの書込みが追いついていない
https://dev.mysql.com/doc/refman/5.6/ja/glossary.html#glos_dirty_page
Buffer Pool Activity
| name | detail |
|---|---|
| Page Created | 作成されたページの数 |
| Page Read | 読み込まれたページの数 |
| Page Written | 書き込まれたページの数 |
Checkpoint Age
Current Lock Wait
トランザクションのロック開放待ち時間の合計秒数
InnoDB I/O
InnoDB I/O Pending
Lock Structures
開放まちLock structの数
InnoDB Log
| name | detail |
|---|---|
| Innodb Log Buffer Size | ログバッファのサイズ |
| Log Byte Written | ログに書き込まれたデータ量 |
| Log Byte Flushed | ロクから書き出されたデータ量 |
| Unflushed Log | ログから書き出されていないデータ量 |
Row Lock Time
行ロック獲得のための所用総時間(msec)
Row Lock Waits
行ロック獲得待機回数
InnoDB Tables In Use
| name | detail |
|---|---|
| InnnoDB Tables In Use | 実行中のトランザクションが利用しているテーブル数の合計数 |
| InnnoDB Locked Tables | 実行中のトランザクションがロックしているテーブル数の合計数 |
InnoDB Transactions
| name | detail |
|---|---|
| InnnoDB Transactions | 生成されたトランザクション数 |
| History List | undo領域にある未破棄のトランザクション数 |
参照
mpstat
CPUごとの使用状況
-P ALLですべてのコアの情報を表示する