LINUX.ORG.RU

Apache2 создает iowait более 80%

 ,


0

1

Добрый день. Веб сервер:

  • 8 ядер xeon
  • 32 гиг оперативы
  • 2 hdd в raid 1
  • 1 ssd (база)

OS Debian nginx+apache2+mysql+php7 (панель ISPmanager)

  • #hdparm -t /dev/sda
  • disk reads: 418 MB in 3.01 seconds = 138.82 MB/sec
  • #hdparm -t /dev/sdb
  • disk reads: 424 MB in 3.01 seconds = 140.98 MB/sec

#df -h: 1.8T 409G 1.3T 24% /

На сервере крутиться более 200 сайтов на вордпрессе (база mysql на отдельном, не большом ссд). Т.е. на данный проблемный массив io нагрузка от nginx+apache2 (картинки, css, кеш вордпресса).

Проблема в том, что периодически (3-5 раз в сутки) дисковая система перестала справляться с нагрузкой, iowait более до 80% и сервер падает на 10-20 мин. В iotop видно большую очередь процессов апача. Пока написал скрипт, который перегружает апач.

Раньше была проблема в «too many open files», были внесены следующие параметры:

/etc/security/limits.conf

  • * soft nofile 16384
  • * hard nofile 16384

/etc/nginx/nginx.conf

  • worker_processes 8;
  • worker_connections 1048;
  • worker_rlimit_nofile 16384;

Проблема наверно в них. Подскажите куда копать? как искать баланс?

Я не сисадмин, но опыт имеется. Заранее спасибо.


Ответ на: комментарий от matawe6067

Nginx есть в связке. Перед ним еще стоит Cloudflare.

OS Debian nginx+apache2+mysql+php7 (панель ISPmanager)

А если кеш будет дергать не apache, а nginx - разве станет легче?

Я понимаю, что в идеале нужно перейти на ССД. Но пока такой возможности нет. Хотелось бы поставить ограничение, где при пиковых нагрузках на сервере не скапливалась бы очередь с лавинным эффектом нагрузки iowait. Но в тоже время не порезать запросы в обычном режиме работы.

dert12
() автор топика

А есть софтина, которой можно регулировать нагрузку на диск пользователем?

dert12
() автор топика
Ответ на: комментарий от dert12

Есть, cgroups называется, встроена в ведро. Для управления есть различные тулзы или же можешь вручную правкой специальных файлов в /proc. Ну, я пока не пробовал регулировать IO, но с ограничениями памяти и процессорного времени оно справляется на ура.

Unicode4all ★★★★★
()
Последнее исправление: Unicode4all (всего исправлений: 1)

Что не справляется с IO?
Зеркало? 2 диска - ~300 iops на чтение.
200 сайтов - тупо 200 iops.
Чуть больше нагрузка на все сразу - диски проседают.
Кэшировать, добавлять шпинделей …

anonymous
()

Посмотреть акцеслог и забанить ботов.

slowpony ★★★★★
()

ДОБАВИТЬ (а не снять) лимиты
https://www.nginx.com/blog/rate-limiting-nginx/

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

slowpony ★★★★★
()

Проблема в том, что периодически (3-5 раз в сутки) дисковая система перестала справляться с нагрузкой, iowait более до 80% и сервер падает на 10-20 мин. В iotop видно большую очередь процессов апача. Пока написал скрипт, который перегружает апач.

Вот берем, смотрим время начала, время окончания.
Потом берем акцеслог за тот же период и анализируем.
Количество, качество. Делаем выводы. Принимаем меры.

slowpony ★★★★★
()
Ответ на: комментарий от slowpony

Лимиты стоят.

limit_req zone=one burst=50 nodelay;

limit_req_status 429;

limit_req_zone $limit_key zone=one:20m rate=8r/s

Так же есть список блеклистов и за cloudflare.com

anonymous
()
Ответ на: комментарий от anonymous

А можно подробнее, что и чем кешировать? Что есть шпиндели?

Статический кеш страниц создает плагин вордпресса.

anonymous
()
Ответ на: комментарий от anonymous

Отписал выше, не заметил что сессия кончилась и был разлогинен

dert12
() автор топика
Ответ на: комментарий от darkenshvein

Согласен, ВП с кучей плагинов еще тот комбайн по пожиранию ресурсов. Думал о другой cms, но переезд будет не рентабелен.

dert12
() автор топика
Ответ на: комментарий от anonymous

Ну, насколько я понимаю, вордпресс кэширует наиболее часто используемые страницы.
Если бот решит, например, проиндексировать все страницы - их точно не будет в кэше.
Т е будут читаться данные с диска.
Шпиндель - это ось, на которой крутятся блины в диске. Из-за физических ограничений возникают проблемы со скоростью доступа
(число операций ввода-вывода за единицу времени), т е IOPS.
Для дисков этот параметр лежит в диапазоне от 50 до 200 на шпиндель, в зависимости от говенности диска.
200 процессов решили прочитать данные с диска, которые не в кэше - вот сразу минимум 200 IOPS.
И линейное чтение из приведенных выше мало характеризует рандомное чтение с диска

anonymous
()
Ответ на: комментарий от anonymous

Значит закручивай их сильнее, пока пиковая нагрузка не станет удовлетворительной.

slowpony ★★★★★
()

Под интенсивной нагрузкой опция монтирования noatime будет очень полезна. А ещё можно сделать что нибудь вроде tar - cvf /dev/null /var/www/html при загрузке, тоже помогает.

Nastishka ★★★★★
()
Ответ на: комментарий от anonymous

Всем спасибо за помошь. Было решено создать кеш nginx на ssd диске, где крутиться БД. Лимиты пока трогать не буду.

dert12
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.