Я хотел бы получить любые подсказки или идеи относительно того, что может вызвать следующую ситуацию.
Веб-сайт находится на сервере 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 показывает небольшую загрузку процессора.
Просветите, пожалуйста.
Похоже, что в PHP закончились дети. В вашем случае - попробуйте отредактировать:
/etc/php5/fpm/pool.d/www.conf
Ищите pm.max_children = 5
и измените его на более высокое значение (10 или более)
Вы также можете проверить php_admin_value[memory_limit] = 32M
.
(максимум позволяет memoryconsumption для каждого дочернего процесса)
Удалите комментарий и измените значение на то, что вам подходит
.
Je moet wetenschappelijk en methodisch zijn in je benadering hiervan. In het bijzonder Wetenschappelijke Methode is uw vriend
Spoel en herhaal indien nodig
Vastgelopen record>
Я думаю, что ЦП исчерпан. Вы использовали "верх", чтобы решить эту проблему?
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;
...
}
}