VPSとディスクI/Oに問題があります。私のサーバーはnginx + PHP-FPM + APCを実行しています。データベースは別の専用VPSにあります。 Webサーバー上にいくつかのWordPress MUサイトがあります。平均I/Oレートは6kブロック/秒です。
高いI/Oの原因を理解しようとしています。
'free -m'の出力:
total used free shared buffers cached
Mem: 1005 973 31 0 96 568
-/+ buffers/cache: 307 697
Swap: 255 8 247
'iotop'の出力:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 3.90 M/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
2150 be/4 root 0.00 B/s 0.00 B/s 0.00 % 65.25 % [flush-202:0]
6694 be/4 www-data 0.00 B/s 19.64 K/s 0.00 % 0.00 % php-fpm: pool www
6700 be/4 www-data 0.00 B/s 23.56 K/s 0.00 % 0.00 % php-fpm: pool www
8646 be/4 www-data 0.00 B/s 424.12 K/s 0.00 % 0.00 % php-fpm: pool www
10974 be/4 www-data 0.00 B/s 19.64 K/s 0.00 % 0.00 % php-fpm: pool www
'flush-202:0'プロセスは、99%のI/Oに達することがあります。これがディスクキャッシュのフラッシュプロセスであることを読みましたが、何が原因で実行され、どのように修正すればよいですか?
Iotopサンプルが何か変わったことを示しているかどうかはわかりません。その時点でI/Oがあまり行われていない場合でも、フラッシュプロセスがいつでもI/Oの高い割合になることは問題ではありません。
atop をインストールします。これは、iotopのようなリアルタイムデータを表示できますが、1日を通してサンプルをログに記録するという利点もあります。インストールの翌日、ログに記録されたデータをatop -r log_filename
で開き、tでサンプルを調べて、システムレベルの出力で報告されるI/Oが高い。次に、プロセスごとの出力をdでディスクに切り替えて、どのプロセスがI/Oアクティビティを生成しているかを確認します。
これはAPCの問題である可能性があります。
それがうまくいく場合は、PHP構成で、次のように設定します。
apc.mmap_file_mask = /tmp/apc.shm.XXXXXX
それでも問題が解決しない場合は、apc.mmap_file_mask設定を完全に削除してください。
APCでない場合は、ディスクバックアップキャッシュを使用する別の方法です。たとえば、仮想メモリ、ワニスキャッシュ、またはDBMファイルを使用するものなどです。そこには多くの可能性があります。たぶんデータベースエンジンですら。
APCのユーザーは、おそらくZendのopcacheに移行する必要があります。これには、後で無料で配布されるPHP(および私が覚えている以前の有料のもの)が付属しています)。opcacheの調整を確認することは、 I/O負荷 https://www.sitepoint.com/understanding-opcache/ は便利な紹介であり、キャッシュパフォーマンス(特にヒット率)を確認するために使用できるいくつかのツールへのリンクです。 )。
これは、pidstatプログラムを使用して実現できます。一部のディストリビューションには、インストールされていません。ただし、sysstateパッケージは here からダウンロードしてコンパイルできます。インストールしないでください。コンパイルしたpidstatをコピーしてください(または現在のディレクトリで実行してください)。 '-d'フラグを渡して、必要な出力を取得できます。