Comment puis-je observer ce que fait nginx? (à résoudre: «1024 connexions_ouvriers ne suffisent pas»)

8

J'ai un site à très faible trafic fonctionnant sur nginx, avec 4 employés, 1024 connexions chacun.

Toutes les quelques heures, je commence à voir dans le journal des erreurs "1024 connexions_ouvriers ne suffisent pas", et mon site ralentit / devient floconneux. Un redémarrage nginx résout entièrement le problème pendant les prochaines heures.

De toute évidence, quelque chose d'étrange se produit, il n'y a aucun moyen de servir 4 000 utilisateurs simultanés de mon application.

En plus de regarder le journal d'accès (qui semble normal), existe-t-il un moyen d'observer avec plus de détails ce que fait nginx?

Y a-t-il une combinaison de configuration notoire qui pourrait avoir pour résultat que les anciennes connexions sont maintenues ouvertes et non fermées?

Merci.

modifier cela ne semble pas correct

# lsof |grep nginx |grep CLOSE_WAIT |wc -l
1271
John Bachir
la source
utilisez-vous proxypass?
Dan R
Non, je n'utilise aucun type de configuration de proxy. C'est un site de rails sur passager.
John Bachir
1
Essayez peut-être nginx.org/en/docs/debugging_log.html permettant à cela de voir avec quelles requêtes cela se produit. Je ne connais pas les passagers / rails. S'il s'agit du port de connexion aux clients Web, le client a fermé la connexion mais nginx ne s'est pas fermé de son côté.
Dan R

Réponses:

7

Sans proxy pass / reverse proxy

max_clients = worker_processes * worker_connections

Avec proxy inverse

max_clients = (worker_processes * worker_connections ) / (X * 2)

2 est parce que vous ouvrez une connexion à ce que vous mandatez

X est cependant le nombre de connexions simultanées que ces clients vous établissent

Pour voir quelles connexions traînent, vous pouvez exécuter lsof -i :PORT. Il montrera toutes les connexions ouvertes à nginx et leur état.

Dan R
la source
essayer ça ... lsof 4.81 sur Ubuntu ... "caractère d'option illégal: I"
John Bachir
voir la sortie lsof dans l'édition ci
John Bachir
1
ne voulait pas capitaliser le -i
Dan R