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

Тестирование продакшена / отладка высокой нагрузки ввода-вывода

В последнее время я испытываю большую нагрузку на этот сервер, больше, чем должно, из-за того небольшого количества, что есть в этой системе. Похоже, что самые простые вещи, использующие диск, такие как обновление YUM, значительно увеличат емкость диска в 10LA, когда он хорошо работает под 1.

Мог ли это быть плохой диск?

iostat -xdk 1 50 http://pastebin.com/hRxY50FC

При высокой степени использования диска помимо необработанной емкости диска важно понимать, как память ведет себя в вашей системе.

Хороший ввод-вывод файла часто требует значительного объема кэширования. При нехватке памяти могут произойти две вещи, которые могут привести к высокой нагрузке ввода-вывода:

  1. Кэшированные файлы выталкиваются из памяти, чтобы освободить место для памяти процесса (это можно увидеть, посмотрев на вывод free команда
  2. Вы можете начать подталкивать память активно в и из раздела подкачки. Вы можете увидеть, происходит ли это, посмотрев на bi / bo в разделе swap с vmstat команда.

Если все в порядке, вы, вероятно, захотите изучить Определение процесса, вызывающего интенсивный ввод-вывод на диск?

Можете ли вы отправить iostat -xdk 1 50, когда возникнет проблема. См. Справочную страницу iostat о том, какой переключатель можно использовать для получения списка имен разделов). Вставьте его вместе с верхним надувом, взятым одновременно.

Хорошо, так что здесь, когда ваш диск кажется слишком загруженным в определенные моменты вашей рабочей нагрузки.

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz       await  svctm  %util
sda              85.00     5.00  249.00   11.00  6040.00    64.00    46.95    10.73       44.23   3.85 100.00
sda               3.00     0.00  275.00    0.00  7764.00     0.00    56.47     7.63   23.27   3.64 100.00
sda             125.00    29.00  221.00    3.00  5508.00   128.00    50.32     7.49   41.08   4.46 100.00
sda              14.00    65.00  224.00   28.00  5940.00   372.00    50.10     1.97    8.05   3.52  88.80

По сравнению с другими итерациями, запрос на чтение иногда становится слишком большим. И тогда ожидание увеличивается. Однако средний размер очереди, указанный в avgqu-sz, по-прежнему довольно низкий. Это означает, что большая часть времени ожидания тратится, пока хранилище обслуживает запросы. Это не на стороне Linux, я имею в виду не на стороне планировщика.

Грубо говоря, очереди две. Один в планировщике, а другой в аппаратной части. Время ожидания измеряется на основе каждого ввода-вывода с момента его попадания в планировщик ввода-вывода до времени, когда оно обслуживается хранилищем, то есть диском. avgqu-sz - это среднее количество операций ввода-вывода, содержащихся как в планировщике ввода-вывода, так и в очереди логических модулей хранилища. Если avgqu-sz намного меньше, чем глубина очереди хранилища, это означает, что в очереди планировщика тратится мало времени. Планировщик будет передавать эти операции ввода-вывода в хранилище, и пока они не будут обслуживаться хранилищем, время ожидания будет увеличиваться.

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