2016-08-26 1 views
1

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

proxy_error_log Nginx говорит, что «вверх по течению истекло (110: Тайм-аут соединения) во время чтения заголовка ответа от вышестоящего, клиента: my_ip, сервер: "domain_name", запрос: "GET/socket_server_path/HTTP/1.1", вверх по течению : «http://127.0.0.1:8080/socket_server_path/», хост: «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 или что-то совершенно другое.

+0

Я также долго боролся с этой проблемой. Убедитесь, что в вашей конфигурации php ничего не ограничено 1024. Подняв пределы php, я решил это тогда. не может получить эту конфигурацию, поэтому я не смогу точно сказать, что вам нужно. – mitchken

ответ

0

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

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

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

Смежные вопросы