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.
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