iostat показывает 100% загрузку - что можно сделать для повышения производительности?
У меня есть выделенный веб-сервер с CentOS.
В последнее время я получаю очень высокую нагрузку на сервер, возможно, из-за узких мест ввода-вывода. iostat -mx 3 показывает:
avg-cpu: %user %nice %system %iowait %steal %idle
12.15 0.00 19.97 67.89 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
sda 15.33 6.67 32.67 0.67 2.58 0.03 160.00 0.27 8.20 7.03 23.43
sda1 15.33 6.67 32.67 0.67 2.58 0.03 160.00 0.27 8.20 7.03 23.43
sdb 134.67 0.00 145.33 10.67 13.34 0.19 177.59 131.25 963.31 6.41 100.03
sdb1 134.67 0.00 145.33 10.67 13.34 0.19 177.59 131.25 963.31 6.41 100.03
sdc 0.00 17.33 0.33 21.00 0.00 0.15 14.50 0.08 3.84 0.31 0.67
sdc1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc2 0.00 14.33 0.33 9.33 0.00 0.09 19.86 0.04 4.28 0.48 0.47
sdc3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc5 0.00 0.67 0.00 4.33 0.00 0.02 9.23 0.02 4.85 0.46 0.20
sdc6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc7 0.00 2.33 0.00 7.33 0.00 0.04 10.55 0.02 2.68 0.18 0.13
sdc8 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
что можно сделать для улучшения производительности? Мой веб-сервер читает много больших файлов с этого жесткого диска. 13MB/s для HDD sata2 является разумным значением? Я ожидаю, что это будет выше.
верхний вывод (только голова):
Cpu(s): 7.5%us, 5.5%sy, 0.0%ni, 4.1%id, 71.5%wa, 3.0%hi, 8.5%si, 0.0%st
Mem: 2048144k total, 2036732k used, 11412k free, 23732k buffers
Swap: 8385888k total, 192k used, 8385696k free, 1375064k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15369 apache 15 0 116m 9.8m 3564 S 3.3 0.5 0:01.37 httpd
23491 apache 15 0 117m 10m 3644 S 3.3 0.5 0:00.55 httpd
21694 mysql 25 0 308m 49m 4752 S 3.0 2.5 1068:49 mysqld
25735 apache 15 0 117m 10m 3660 S 2.7 0.5 0:00.53 httpd
25909 apache 15 0 116m 9964 3548 S 1.0 0.5 0:00.15 httpd
14814 apache 15 0 117m 10m 3684 S 0.7 0.5 0:00.53 httpd
15708 apache 15 0 117m 9.9m 3564 S 0.7 0.5 0:00.66 httpd
21464 apache 15 0 117m 10m 3664 S 0.7 0.5 0:01.32 httpd
22997 apache 15 0 116m 9.8m 3656 R 0.7 0.5 0:04.16 httpd
23484 apache 15 0 117m 10m 3668 S 0.7 0.5 0:00.28 httpd
Спасибо
4 ответа
Я знаю, это довольно старая тема, но я сталкиваюсь с подобной проблемой
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
sdb 134.67 0.00 145.33 10.67 13.34 0.19 177.59 131.25 963.31 6.41 100.03
Так что в моем случае, когда avgqu-sz достигает глубины очереди на луну (/sys/block/sdb/device/queue_depth), происходит насыщение диска, и в моем случае оно устанавливается на 128. Я просто увеличиваю его до 192, и теперь оно становится лучше производительность. Я знаю, что это не лучшее решение, но я не могу позволить себе сменить диск, поэтому это единственное решение, которое у меня есть.
То, что в основном показывает iostat, это ваш диск, насыщенный IOPS.
man iostat
:
• rrqm / s - количество запросов на чтение, слитых в секунду, которые были поставлены в очередь на устройстве.
• r / s - количество (после слияний) запросов чтения, выполненных в секунду для устройства.
Справочные данные по производительности IOPS жестких дисков, Википедия
Сравните цифры.
Я настоятельно рекомендую вам заменить sdb на RAID или SSD-массив.
13,34 МБ / с довольно медленно для жесткого диска серверного или настольного класса, но пропускная способность может быть затруднена большим количеством произвольного доступа. Если этот диск представлен как RAID 1 или RAID 5 от оборудования, это может объяснить некоторые потери в пропускной способности
Вы можете проверить свою реальную производительность, используя bonnie++, когда веб-сервер находится в автономном режиме. Обычный настольный диск SATA II должен достигать 40-70 МБ / с.
Вы можете добиться хорошего произвольного доступа, используя RAID 0 (избыточность BAD) или, в идеале, RAID 10 с> 4 дисками.
Обновление: Вы также должны добавить столько оперативной памяти, сколько можете себе позволить. Значения памяти показывают, что сервер уже кэширует огромное количество данных в оперативной памяти.
Вы можете обнаружить, что стоимость Amazon S3 и / или EC2 на самом деле более рентабельна, если учесть, сколько еще оборудования вам придется покупать.