以前にも下記リンクで負荷調査について記事を書いたんですが、もう少し掘り下げてみようかと。
サーバーの過負荷の発見 理論編
サーバーの過負荷の発見 メモリ使用率の調査&抽出、置換(awk,sed)コマンドについて
システム監視の基礎
全体の流れ
- ロードアベレージ調査
- ロードアベレージ低→ネットワーク系の可能性高い(コマンド調査)
- ロードアベレージ高→CPU,メモリ,I/Oの可能性高い(コマンド調査)
参考リンク
ロードアベレージ
辞書的な定義は1CPUにおける単位時間あたりの実行待ちとディスクI/O待ちのプロセスの数。「CPUの実行権限が与えられるのを待っているプロセス」と「ディスクI/Oの完了を待っているプロセス」の多さのこと
簡単に言うとこれが大きいほど仕事が混んでる状態。(目安として1以下であれば軽く、1~3は中くらい、それ以上だと重い。ただしコア数との兼ね合いが大きい。)
uptimeで直近1分、5分、15分をみることができる他、topでみることもできる
CPU使用率
ロードアベレージが高い場合、CPU使用率が高い可能性があります。t
- topをCPU利用率でソート
- 利用率の高いものをpsコマンドで状態を確認
- そのあと、straceやoprofileなどでさらに詳しい調査をすることが可能
メモリ使用率、ディスクI/O
CPU使用率が高くなく、Idle(待機まち)の率が高い場合、メモリ使用量、ディスクI/Oを疑う。
- topコマンドでMemとSwap使用率をみて、Swap使用率が相対的に高い場合、スワップを疑う。
- topでメモリ使用率でソート
- 利用率の高いものをpsでコマンド状態で確認
- スワップが発生している場合プログラムで改善し、無理なものはメモリの増設で対応する
- スワップが発生していない場合はキャッシュに必要なメモリが不足。データの分散やキャッシュサーバーの導入を検討
スワップ・・メモリが不足した場合、現在使用されていないプロセスを一時的にハードディスクに書き込む機能の1つ。ハードディスクに書き込むことをスワップアウト、メモリにデータを戻すことをスワップインとよび、一般的にこの使用率が高い場合、メモリ不足が疑われる。
ネットワーク関連
ロードアベレージが低いのに、ネットワークに問題があり、遅いことも考えられる。netstatなどでTCPコネクション数を調べる