У меня есть выделенный веб-сервер с 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
что можно сделать для повышения производительности? Мой веб-сервер читает множество больших файлов с этого жесткого диска. неужели 13МБ / с для 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
Спасибо
Я знаю, что это довольно старый поток, но я столкнулся с аналогичной проблемой
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 достигает глубины очереди lun (/ sys / block / sdb / device / queue_depth), происходит насыщение диска, и в моем случае оно установлено на 128. Я просто увеличиваю его до 192, и теперь становится лучше Я знаю, что это не лучшее решение, но сейчас я не могу позволить себе заменить диск, так что это единственное решение, которое у меня есть.
То, что в основном показывает iostat, - это ваш диск насыщенный с участием IOPS.
man iostat
:
• rrqm / s - количество запросов чтения, объединенных в секунду и помещенных в очередь на устройство.
• r / s - количество (после слияния) запросов чтения, выполненных за секунду для устройства.
Справочные данные о производительности HDDs IOPS, Википедия
Сравните числа.
13,34 МБ / с - это довольно медленно для жесткого диска серверного или настольного класса, но пропускная способность может быть затруднена из-за большого количества произвольного доступа. Если этот диск представлен на оборудовании как RAID 1 или RAID 5, это может частично объяснить вашу потерю пропускной способности.
Вы можете проверить свою реальную пропускную способность с помощью bonnie ++, когда веб-сервер отключен. Обычный настольный диск с интерфейсом SATA II должен достигать 40-70 МБ / с.
Вы можете добиться хорошего произвольного доступа, используя RAID 0 (избыточность BAD) или, в идеале, RAID 10 с> 4 дисками.
Обновление: вам также следует добавить столько оперативной памяти, сколько вы можете себе позволить. Показатели памяти показывают, что сервер уже кэширует большой объем данных в ОЗУ.
Вы можете обнаружить, что стоимость Amazon S3 и / или EC2 на самом деле более рентабельна, если учесть, сколько еще оборудования вам, возможно, придется купить.
Я настоятельно рекомендую вам подумать о замене sdb на SSD или RAID-массив с поддержкой SSD.