web-dev-qa-db-ja.com

高いディスクI / Oの原因を特定します

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に達することがあります。これがディスクキャッシュのフラッシュプロセスであることを読みましたが、何が原因で実行され、どのように修正すればよいですか?

2
Mem

Iotopサンプルが何か変わったことを示しているかどうかはわかりません。その時点でI/Oがあまり行われていない場合でも、フラッシュプロセスがいつでもI/Oの高い割合になることは問題ではありません。

atop をインストールします。これは、iotopのようなリアルタイムデータを表示できますが、1日を通してサンプルをログに記録するという利点もあります。インストールの翌日、ログに記録されたデータをatop -r log_filenameで開き、tでサンプルを調べて、システムレベルの出力で報告されるI/Oが高い。次に、プロセスごとの出力をdでディスクに切り替えて、どのプロセスがI/Oアクティビティを生成しているかを確認します。

2
sciurus

これは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/ は便利な紹介であり、キャッシュパフォーマンス(特にヒット率)を確認するために使用できるいくつかのツールへのリンクです。 )。

1
mc0e

これは、pidstatプログラムを使用して実現できます。一部のディストリビューションには、インストールされていません。ただし、sysstateパッケージは here からダウンロードしてコンパイルできます。インストールしないでください。コンパイルしたpidstatをコピーしてください(または現在のディレクトリで実行してください)。 '-d'フラグを渡して、必要な出力を取得できます。

0
Matthew Ife