Ограничения на файлы с помощью PHP WebSocket Server и обратного прокси-сервера NGINX

Я настроил сервер веб-сокетов PHP (Ratchet) и использую NGINX в качестве обратного прокси-сервера, чтобы пользователи не подключались к другому порту. Все идет отлично, пока я не получу чуть меньше 1024 (точнее 1020) соединений. Тогда любое другое соединение отклоняется (время ожидания). Похоже, что-то ограничено 1024 дескрипторами файлов, но я не могу понять, что.

В proxy_error_log NGINX говорится, что «истекло время ожидания восходящего потока (110: истекло время ожидания соединения) при чтении заголовка ответа из восходящего потока, клиент: my_ip, сервер:« имя_домена »,
запрос: «GET / socket_server_path / HTTP / 1.1», upstream: «http://127.0.0.1:8080/socket_server_path/«, host:» domain_name_again «

Пользователь NGINX и пользователь, работающий на сервере, имеют хороший предел файла, установленный в /etc/security/limits.conf (выше 1024). Из того, что я могу сказать, процессы имеют верхний предел, установленный в / proc / PID # / limit.

https://github.com/ratchetphp/Ratchet/issues/300 описывает то, что, по моему мнению, происходит, но я не вижу такой ошибки при печати в моем приложении. Я все равно скомпилировал PHP с параметром —enable-fd-setsize = 10000, но это все равно не позволяет больше подключений.

Как я могу получить более подробную информацию об этом и понять, что именно происходит? Все, что мне нужно сейчас сделать, это то, что NGINX истекает. Но я не знаю, если PHP не может открыть больше сокетов, или это NGINX, или что-то совершенно другое.

1

Решение

Оказывается, я был просто дурачком. В соответствии с https://bugs.php.net/bug.php?id=69637 —enable-fd-setsize не работает так, как должно.

И хотя я изменил константы файла заголовка системы (упомянутые в проблеме Ratchet, связанной с моим первоначальным вопросом), я перекомпилировал без выполнения команды «make clean», так что, я думаю, я все еще компилировал со старыми (нижними) значениями ,

Я не смог найти ничего в моей конфигурации php, связанной с этим. Но после изменения констант в заголовочных файлах и повторной компиляции я смог преодолеть максимум 1024.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]