CakePHPアプリケーションを実行しているサーバーでこの問題があります。サーバーがめちゃくちゃ遅いので、最初はアプリケーションの問題だと思っていましたが、ディスクへの書き込みが5〜6MB /秒であることがわかりました。
そのような重い書き込みの原因を見つける最も簡単な方法は何ですか?
サーバーはGentooを実行しています。
iotop をインストールし、それを実行しているプログラムを見つけます。
Dstatの作者として、私は追加のオプションを指摘します。 I/O帯域幅を最も多く消費しているプロセスを簡単に確認できます。
dstat -ta --top-bio
またはdstat -ta --top-io
1つ目はトップブロックI/O、2つ目はトップI/O(キャッシュを含む)です。これは、これが期待どおりかどうか(消費者と消費の両方)を検証するのに役立ちます。
ディスクの使用率を特定するのに役立つ他のプラグインがいくつかあります。
dstat -tdf --disk-util
したがって、I/Oボトルネックがある場合は、どのディスクが関係しているかがわかり、その最後に何かできるかどうかを確認できます。
また、特定の(ネットワーク)ファイルシステムのトラブルシューティングを行う場合は、他のプラグインを使用して、それらのファイルシステムに関する詳細情報を取得できます。 Dstatには、他のメトリック(cpu、VM、仮想化など)のプラグインもあり、視覚化する必要があるものに応じて、独自のプラグインを記述したり、既存のプラグインを変更して、相関する必要があるものを正確に表示したりできます。
ただし、サポートが必要な場合、貢献したい場合、または気の利いた新しいアイデアがある場合は、私に連絡して、どのように進めればよいかを確認してください...
vmstatとiostatを試す
ファンシーdstatツールを使用できます
Dstatのマニュアルページから-「dstat -M time、cpu、net、disk、sys、load、proc、topcpu」。 dstatはほとんどのディストリビューションでインストールされるため、iotopをインストールするよりも高速です。
次のコマンドを使用して、syslogでディスクアクティビティを(それを生成するpidとともに)ダンプできます。
echo 1 > /proc/sys/vm/block_dump
これを発行する前に、システムログがブロックデバイス上にないことを確認してください。そうしないと、無限ループに陥ってしまいます。