Назад | Перейти на главную страницу

Как обеспечить возврат к нормальной скорости запросов ввода-вывода?

На Веб-сервисы Amazon Я использую t2.small EC2 как VPS, обслуживающий несколько веб-сайтов в стеке LAMP (PHP). Я только что получил счет, который почти утроил мой обычный счет. Я вижу что мой Использование запросов ввода-вывода было чрезвычайно высоким. Я зашел на сервер и заметил, что диск заполнен. Я удалил кучу некритических файлов и журналов, и теперь диск (EBS) заполнен менее 60%, но я хотел бы проверить две вещи.

  1. Как я могу определить, связано ли большое количество запросов ввода-вывода с заполнением диска?
  2. Как я могу узнать, что я все еще прожигаю запросы ввода-вывода?

У меня не было специфичного для AWS CloudWatch служба мониторинга включена, поэтому я, вероятно, не получу ответа на №1, но любые советы будут признательны.

Что касается №2, я использовал два метода, упомянутых в это сообщение в блоге чтобы определить мою скорость ввода-вывода, и кажется, что она очень и очень высока. Вот некоторая статистика с сервера:

$ 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 сайтов, только три из которых получают больше нескольких посещений в день. Их составляет порядка нескольких сотен посетителей в день. Сервер и сайты оставались в этой конфигурации в течение многих лет без проблем. Только недавно количество операций ввода-вывода начало расти, без соответствующих изменений в коде, конфигурации сервера или загрузке веб-сайта.

Обратите внимание, что этот вопрос изначально задавался официальный форум Amazon Web Services однако, похоже, никто не смог там помочь. Возможно, вопрос слишком общий для этого форума.

На странице руководства iostat есть важная информация, непонимание которой может привести к неправильному пониманию представленных данных.

Первый отчет, созданный командой iostat, содержит статистику времени, прошедшего с момента загрузки системы. Каждый последующий отчет охватывает время, прошедшее с момента предыдущего отчета. Вся статистика отображается при каждом запуске команды iostat.

Итак, ваш простой iostat, приведенный выше, сообщает значения, собранные с момента запуска системы.

Более нормально запускать iostst с интервалом и отбрасывать первый набор статистики, например.

iostat 5

это будет сообщать соответствующую статистику каждые 5 секунд.

Собрав правильные данные, вы сможете лучше понять ситуацию.


Взгляните на наверху команда. В частности, запустив его с привилегиями и выбрав d включит статистику io диска для каждого потока.