2016-08-26 1 views
1

J'ai configuré un serveur websocket PHP (Ratchet) et utilise NGINX comme proxy inverse pour éviter que les utilisateurs se connectent à un autre port. Tout va bien jusqu'à ce que je reçois un peu moins de 1024 (1020 pour être exact) des connexions. Ensuite, toutes les autres connexions sont refusées (expire). On dirait que quelque chose est plafonné à 1024 descripteurs de fichiers, mais je ne peux pas comprendre quoi.Limites de fichiers avec PHP WebSocket Server et proxy inverse NGINX

proxy_error_log de Nginx dit que « chronométré en amont sur (110: Délai de connexion dépassé) en-tête de réponse de lecture de l'amont, client: my_ip, serveur: "nom_domaine", demande: "GET/socket_server_path/HTTP/1.1", en amont : "http://127.0.0.1:8080/socket_server_path/", hôte: "nom_domaine_again"

L'utilisateur NGINX et l'utilisateur exécutant le serveur ont tous les deux une limite de fichier définie dans /etc/security/limits.conf (supérieure à 1024). les processus ont une limite haute définie dans/proc/PID #/limite

https://github.com/ratchetphp/Ratchet/issues/300 décrit ce que j'imagine qui se passe, mais je ne vois pas cette impression d'erreur dans mon application ation. Je suis allé de l'avant et compilé PHP avec --enable-fd-setsize = 10000 de toute façon, mais cela ne permet toujours pas plus de connexions.

Comment puis-je obtenir plus de détails à ce sujet et comprendre ce qui se passe exactement? Tout ce que je dois faire en ce moment, c'est que NGINX est en train d'expirer. Mais je ne sais pas si PHP est incapable d'ouvrir plus de sockets, ou si c'est NGINX, ou quelque chose de complètement différent.

+0

J'ai également lutté avec ce problème pendant longtemps. Assurez-vous que rien n'est plafonné à 1024 dans votre configuration PHP. En élevant les limites de php je l'ai résolu alors. Je ne peux plus récupérer cette configuration, donc je ne serai pas capable de dire exactement ce dont vous avez besoin. – mitchken

Répondre

0

Il s'est avéré que j'étais juste un mannequin. Selon https://bugs.php.net/bug.php?id=69637 --enable-fd-setsize ne fonctionne pas aussi bien qu'il le devrait. Et même si j'ai changé les constantes du fichier d'en-tête système (mentionnées dans le problème de Ratchet lié à ma question initiale), j'ai recompilé sans exécuter make make, donc je suppose que je compilais toujours avec l'ancien (valeurs limites basses).

Je n'ai pas réussi à trouver quoi que ce soit dans ma configuration PHP liée à cela. Mais après avoir changé les constantes dans les fichiers d'en-tête et compilé à nouveau, j'ai été capable de dépasser le maximum de 1024.