Chapter 1. Описание проблемы и её решение.

Настроена связка NGINX + PHP-FPM. PHP-FPM слушает обращения работает через  unix socket:

Операционная система CentOS 6.5

NGINX настроен принимать входящие соединения на адресе test.local и передавать их на PHP-FPM

Параметры в fcgi-as.fconf всегда отдают все обращения файлу index.php

В файле index.php прописан маленький скрипт для теста:

Для тестирования производительности используется программа OpenLoad — http://openwebload.sourceforge.net/

Программа собрана из исходников, для сборки пришлось её немного пропатчить, так как она во первых не компилировалась, а во вторых нельзя было указать дополнительные параметры для gcc через configure.

В файле /src/tmplchunk.h меняем строку:

На строку

После выполнения configure в файле /src/Makefile меняем строку:

На строку:

Этого можно и не делать, но тогда программа немного подтормаживает и выполняет на 3-5% запросов меньше.

Важно: Не пытайтесь использовать openload или любую другую программу для тестирования Вашего сервера на windows, на этой OS Вы скорее упретесь в производительность Вашей windows машины чем в производительность Вашего сервера, а результаты не будут достоверными.

Выполняем компиляцию программы

[Патчим файлы]

И начинаем тестирование. Параметры программы:

Выполняем команду:

Пока всё хорошо:

Усложняем задачу:

И получаем проблему:

В логе nginx видим строчки:

Проиходит это потому что операционная система отвергает попытки nginx подключиться к unix сокету.

Причина либо превышено максимальное кол-во соединений к сокету либо максимальное кол-во не обработанных соединений к сокету.

Проверяем лимиты:

Нас интерисуют строки:

Из-за них и происходит ошибка, так как максимальное кол-во соединений 128 а максимум не обработанных 200

Меняем лимиты, в файл /etc/sysctl.conf прописываем строки

Применяем параметры

Перезапускаем php-fpm

Запускаем наше тестирование:

Видим что все в порядке:

Вот и все, проблема решена, а заодно мы получили замечательную утилиту openload для последующего тестирования и оптимизации производительности нашего сервера.

Один комментарий к “Ошибка NGINX — 11: Resource temporarily unavailable — На связке NGINX + PHP-FPM через unix socket”

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.