最近、PHPのスロークエリログを追跡していると、プログラムが特定のクラスファイルをインクルードするときにスタックしていることがわかりました。そして実際にタイムアウトしてしまいました。
当初の位置付けは、io応答がタイムアウトし、ハードディスクの読み取りに問題が発生したということです。
いくつかのコマンドを使用して検索します:
iostat -d -x -k 1 10 // 10 回実行して、iostat の wait パラメーターが非常に大きく、通常は 5ms 以下であることを確認します。await svctm の 2 つのパラメーターが近いほど、io のパフォーマンスが向上します。 。
他のブログを参照してください
await: 各IOリクエストの平均処理時間(単位はマイクロ秒、ミリ秒)。これは IO 応答時間として理解できます。通常、システム IO 応答時間は 5 ミリ秒未満である必要があり、10 ミリ秒を超える場合はさらに大きくなります。
この時間にはキュー時間とサービス時間が含まれます。つまり、通常の状況では、両者の差が小さいほどキュー時間は長くなります。キュー時間。これは、システムに問題が発生したことを意味します。 svctm は、各デバイス I/O 操作の平均サービス時間 (ミリ秒単位) を表します。 svctm の値が await に非常に近い場合は、待機している I/O がほとんどなく、ディスクのパフォーマンスが非常に優れていることを意味します。 await の値が svctm の値よりもはるかに高い場合は、I/O が待機していることを意味します。 O キューの待機時間が長すぎると、システム上で実行されているアプリケーションの速度が低下します。
sudo iotop -o, // ハードディスク上に割り当てられているプログラムを確認し、プロセスのio占有率を確認する
sudo perf top // プロセスIO使用率を確認する
sudo hdparm -t /dev/**** ディスク読み取り効率をチェック
表示: バッファリングされたディスク読み取りのタイミング: 3.14 秒で 10 MB = 3.18 MB/秒
中断されない睡眠を見る
、 do date; ps auxf | '{if($8=="D") print $0;}';
上記のコマンドを実行したところ、ハードディスクの読み取り効率が非常に低くなりました。これは、ハードディスクに不良セクタがある可能性があると推測されます。