will and way

ただの自分用メモを人に伝える形式で書くことでわかりやすくまとめてるはずのブログ

アプリが遅くなったと感じた時の監視ポイント

1. 以前は早かったのに、遅くなった。

以前は早かったがポイント。
大抵の場合はデータ量の増加が原因。

2. データ量増加によるSlow query

mysqlではquery-long-timeというパラメータがあり、その設定時間以上かかったクエリの場合は
slow queryとして認識され、ログに吐出されます。

そのslow queryログを確認すれば遅いクエリがわかる。

対策は
・クエリのチューニング
・インデックスを貼る
・joinを減らすために非正規化
・アプリケーションレベルでのjoin(join禁止、select columns,... where index = ?を多用させる。)→memcachedとの相性がいい。

3. Mysqlのスレッドを確認する

mysql> show full processlist
で、動作中のプロセスが確認できる。
これで、プロセスが終了しているか確認できる、

4. データの抽出ロジックの確認

特に途中からプロジェクトに参画した場合、ロジックには疑ってかかるべき。
データの抽出過程でソートやデータの連結をしている場合には、これによる影響が考えられる。