パフォーマンスグラフの見方とか
(追記:このエントリは自力ではありません)
CloudForecast というリソース管理ツールがあります。
色々見られるのはいいんですが、[よく分からん|知らん|勘違いしている]項目ばかりなので解説のようなものを。
- Traffic
Throughput
転送量。
Outbound
外部へ返すレスポンス。
なお、In/Out両方とも、単純に サーバ <*> ユーザ の間でやりとりしているデータ量より多い量がグラフで見える。
例えばInboundの場合、リクエスト受けて、バックエンドにproxyして結果を受け取ってユーザに返す、とかするから。
- Basic
system
psとかstatとかで見られるアレ。
Load Average
コア数を考慮して見る。値が1でも、コア数が1より大きいなら、ただちに焦る必要は無い。
また、値がコア数に達していても、処理が出来ているならただちに影響は無い。
あくまで負荷の目安。
Memory Usage
基本的には このへん 見ればいいと思う。
また、swapがあったとしても、swapに追い出された部分のデータがあんまり使用されないデータだったら、特に問題はないので、ケースバイケースで。
swapは、メモリに乗り切らなかったデータをディスクに置いてるだけなので、参照・要求などが全然されないデータがswapしても別にいいのです。
cached
一度メモリにデータが載った分。次にそのデータを使用する際、ファイルから読んだりするんじゃなく、メモリから返す。
avail
空きメモリ。cachedになった分が開放されたら、availが増える。
number of TCP Established
Established(接続が確立されて、データ送受信可能な状態)な状態のTCPコネクション数。netstat *n とかで確認。
ESTABLISHED の意味は上記のとおりだが、実際にはデータをやり取りしてる、と考えていい。らしいよ。
例えばappサーバで、memcachedに繋いでいるようなアプリだった場合、ずっとmemcachedと繋ぎっぱなしだったりすると、それも当然tcpコネクションなので、ここのグラフが常に大きく、かつ大体同じ値を指す事になることもある。
- HTTP
number of request
リクエスト数。
cache hit ratio
キャッシュのヒット率。
MySQL Queries Count
こちらはクエリの個数。
MySQL Slow Queries
言わずもがなのスロークエリ。
ログを取らなかったり、テストを書かなかったりすると、椅子やiMacが飛ぶと言われている昨今、スロークエリが出るようなコードを書いてしまった日には何が飛ぶか想像も出来ないので、間違ってもそんなコードを書かないように。
MySQL Threads
スレッドの数。
mysqlでは、スレッドを作るのに多少オーバーヘッドがあるので、一度作ったスレッドを使いまわしている。
で、例えば、ORMからDBへ接続するときにper requestでconnectionを切っているなら、あまり増えないはず。
cached
作ったスレッドを持っている状態。繋がってすらいない。スレッドがあるだけ。
ROW OPERATIONS Count
countといいつつ、crudのクエリの割合。数ではない。紛らわしいので注意。
多分、readが多い状態がよくあると思う。それは、innodbでは、データをupdate/deleteするにも、まずselect投げて、どのデータをupdate/deleteするのか探している。で、その仕様上、readが多くなる。
ROW OPERATIONS Speed
読み出してるデータ量。
こちらもspeedといいつつ、読みだしている行数。
indexが不適切だったりすると、増える。
Cache Hit Ratio
キャッシュのヒット率。
innodb_buffer_pool_size で作ったメモリからちゃんと読めているか、が確認できる。
DBの実ファイルよりもinnodb_buffer_pool_sizeの方が大きいと、そもそもデータが全てメモリに載っているので、ほぼ100パーセントになる。
実ファイルは、例えば
# du -sh /var/lib/mysql/
とかで見る。(これだと全テーブルのサイズになっちゃうけど)
そうでなくとも、参照されているデータが常にキャッシュにあるような場合も、100パーセントに近くなる。
この辺の値は、show innodb statusで確認している。
まー、ディスクはメモリの100倍以上遅いので、普通はメモリを有効活用する。