I/O 要求が通常のレートに戻ったことを確認するにはどうすればよいですか?

I/O 要求が通常のレートに戻ったことを確認するにはどうすればよいですか?

の上アマゾンウェブサービス私はt2.small EC2たとえば、LAMP (PHP) スタックでいくつかのウェブサイトを提供する VPS として。私は通常の請求額のほぼ 3 倍の請求書を受け取りました。I/Oリクエストの使用率が異常に高かったサーバーにログインしたところ、ディスクがいっぱいになっていることに気付きました。重要でないファイルやログをいくつか削除したところ、ディスク (EBS) の容量は 60% 未満になりましたが、2 つの点を確認したいと思います。

  1. I/O 要求の数が多いのはディスクがいっぱいになったためかどうかをどのように判断すればよいでしょうか?
  2. I/O 要求がまだ消費されているかどうかはどうすればわかりますか?

AWS固有のクラウドウォッチ監視サービスが有効になっているため、おそらく #1 の回答は得られないでしょうが、アドバイスをいただければ幸いです。

2に関しては、このブログ投稿I/O レートを判定したところ、非常に高いようです。サーバーからの統計情報は次のとおりです。

$ iostat
Linux 3.13.0-45-generic (dysphoria)     2015-10-08      _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.74    0.01    0.69   16.83    0.43   79.30

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda            170.08     10039.29        32.52  843300857    2731428
xvdf              0.01         0.02         0.00       1308          0

$ cat /proc/diskstats
   1       0 ram0 0 0 0 0 0 0 0 0 0 0 0
   1       1 ram1 0 0 0 0 0 0 0 0 0 0 0
   1       2 ram2 0 0 0 0 0 0 0 0 0 0 0
   1       3 ram3 0 0 0 0 0 0 0 0 0 0 0
   1       4 ram4 0 0 0 0 0 0 0 0 0 0 0
   1       5 ram5 0 0 0 0 0 0 0 0 0 0 0
   1       6 ram6 0 0 0 0 0 0 0 0 0 0 0
   1       7 ram7 0 0 0 0 0 0 0 0 0 0 0
   1       8 ram8 0 0 0 0 0 0 0 0 0 0 0
   1       9 ram9 0 0 0 0 0 0 0 0 0 0 0
   1      10 ram10 0 0 0 0 0 0 0 0 0 0 0
   1      11 ram11 0 0 0 0 0 0 0 0 0 0 0
   1      12 ram12 0 0 0 0 0 0 0 0 0 0 0
   1      13 ram13 0 0 0 0 0 0 0 0 0 0 0
   1      14 ram14 0 0 0 0 0 0 0 0 0 0 0
   1      15 ram15 0 0 0 0 0 0 0 0 0 0 0
   7       0 loop0 0 0 0 0 0 0 0 0 0 0 0
   7       1 loop1 0 0 0 0 0 0 0 0 0 0 0
   7       2 loop2 0 0 0 0 0 0 0 0 0 0 0
   7       3 loop3 0 0 0 0 0 0 0 0 0 0 0
   7       4 loop4 0 0 0 0 0 0 0 0 0 0 0
   7       5 loop5 0 0 0 0 0 0 0 0 0 0 0
   7       6 loop6 0 0 0 0 0 0 0 0 0 0 0
   7       7 loop7 0 0 0 0 0 0 0 0 0 0 0
 202       0 xvda 14198708 1225 1686588426 26715600 87579 51756 5461696 11290600 0 16654328 38003076
 202       1 xvda1 14198527 1203 1686586802 26715376 87579 51756 5461696 11290600 0 16654236 38002848
 202      80 xvdf 447 6 2616 288 0 0 0 0 0 288 288

$ free -m
             total       used       free     shared    buffers     cached
Mem:          2000       1910         89          6          6       1216
-/+ buffers/cache:        688       1312
Swap:            0          0          0

上記の情報は起動直後に取得されたものですが、iostatシステムが数時間稼働した後でも、レポートには初期 TPS が 50 ~ 80 の範囲であることが示されています。サーバーは約 20 のサイトに対応していますが、1 日に数回以上のアクセスがあるのはそのうち 3 つだけです。これらのサイトには 1 日に数百人の訪問者が訪れます。サーバーとサイトは、問題なく何年もこの構成のままでした。コード、サーバー構成、または Web サイトの負荷に対応する変更がないにもかかわらず、最近になって I/O が急増し始めました。

この質問は元々Amazon Web Services 公式フォーラムしかし、誰もそこでは助けることができなかったようです。おそらく、その質問はそのフォーラムには一般論すぎるのでしょう。

答え1

iostat のマニュアル ページには重要な情報が記載されており、それを理解しないと、表示されるデータの誤解を招く可能性があります。

iostat コマンドによって生成される最初のレポートには、システムの起動以降の時間に関する統計情報が提供されます。後続の各レポートには、前回のレポート以降の時間が記録されます。iostat コマンドが実行されるたびに、すべての統計情報がレポートされます。

したがって、上記の単純な iostat は、システムの起動後に収集された値を報告しています。

ioststを間隔をあけて実行し、最初の統計セットを破棄するのがより一般的です。例:

iostat 5

これにより、関連する統計が 5 秒ごとに報告されます。

正しいデータを収集すると、状況をよりよく理解できるようになります。


見てみましょう上にコマンド。特に、特権で実行して選択すると、dスレッドごとのディスク IO 統計が有効になります。

関連情報