Исправляем ошибку Resource temporarily unavailable) while connecting to upstream, client nginx на связке NGINX + PHP-FPM

baltun

Администратор
Сообщения
10.886
Реакции
2.591
Баллы
2.003
Буду краток проходим тестирование:
Код:
ab -k -c 200 -n 2000 https://localhost.ru
При этом nginx нормально настроен но падает с ошибкой 502 Bad Gateway. Причина либо превышено максимальное кол-во соединений к сокету либо максимальное кол-во не обработанных соединений к сокету.
Проверяем лимиты:
Код:
sysctl net.core

Нас интересуют строки:
Код:
net.core.somaxconn = 128
net.core.netdev_max_backlog = 200
Из-за них и происходит ошибка, так как максимальное кол-во соединений 128 а максимум не обработанных 200

Меняем лимиты, в файл /etc/sysctl.conf прописываем строки:
Код:
net.core.somaxconn = 20000
net.core.netdev_max_backlog = 65535
fs.file-max = 500000

Применяем параметры:
Код:
sysctl -p

Перезапускаем php-fpm:
Код:
service php-fpm restart

Проводим тестирование:
Код:
ab -k -c 400 -n 2000 https://localhost.ru
Теперь nginx не падает и обрабатывает соединения, но появился вопрос как избавится от большого количества Failed requests не обработанных запросов.
Для этого требуется изменить параметр php-fpm.d:
Код:
pm.max_children = 100
Тогда при выполнении команды выше Failed requests будет в моем случае всего 1.
 
Последнее редактирование:
Назад
Верх Низ