Как определить узкие места в установке Debian / Ubuntu nginx + php5-fpm

Я хотел бы получить любые подсказки или идеи относительно того, что может вызвать следующую ситуацию.

Веб-сайт находится на сервере Debian с nginx 1.6.2, от php5 до fpm.

GET-запрос к странице должен генерировать ZIP-архив значительного размера из нескольких запрошенных файлов, находящихся на сервере. Это ресурсоемкая операция, занимающая около 30 секунд (скажем) и потребляющая ~ 500+ МБ памяти.

Теперь, если во время этой операции клиент пытается открыть другую страницу, PHP ' Обработка сеанса вызовет задержку открытия этой страницы до завершения первого запроса GET. Все это до сих пор находится в пределах моего понимания.

Однако: если клиент (настойчиво) обновит браузер несколько раз (5-8), сервер вообще не ответит ЛЮБОМУ пользователю, не только настойчивому. Это меня беспокоит, потому что для конфигурации nginx установлено значение 2 worker_processes , каждый из которых имеет 1024 worker_connections , что должно дать мне как минимум около 1000 подключений, прежде чем сервер уйдет в бункер.

Top command показывает небольшую загрузку процессора.

Просветите, пожалуйста.

0
задан 23 December 2016 в 09:23
3 ответа

Похоже, что в PHP закончились дети. В вашем случае - попробуйте отредактировать:

/etc/php5/fpm/pool.d/www.conf

Ищите pm.max_children = 5 и измените его на более высокое значение (10 или более)

Вы также можете проверить php_admin_value[memory_limit] = 32M. (максимум позволяет memoryconsumption для каждого дочернего процесса)

Удалите комментарий и измените значение на то, что вам подходит

.
1
ответ дан 5 December 2019 в 09:00

Je moet wetenschappelijk en methodisch zijn in je benadering hiervan. In het bijzonder Wetenschappelijke Methode is uw vriend

  • Installeer monitoring
  • Verzamel gegevens
  • Analyseer gegevens
  • Breng wijzigingen aan op basis van analyse
  • Monitor wijzigingen
  • Document

Spoel en herhaal indien nodig

0
ответ дан 5 December 2019 в 09:00

Я думаю, что ЦП исчерпан. Вы использовали "верх", чтобы решить эту проблему?

Nginx позволяет устанавливать ограничения скорости с помощью модуля ограничения скорости . Здесь есть руководство , но я думаю, это больше на уровне ресурсов, чем на уровне IP. Этот блок должен ограничивать запросы и соединения, что было бы более подходящим для вас - код с этого сайта .

http {
  ...
  limit_conn_zone $binary_remote_addr zone=alpha:8m;
  limit_req_zone  $binary_remote_addr zone=delta:8m rate=30r/s;
  ...

  server {
    ...
    limit_conn alpha 5;
    limit_req  zone=delta burst=80 nodelay;
    ...
  }
}
-1
ответ дан 5 December 2019 в 09:00

Теги

Похожие вопросы