2 votes

les connexions des travailleurs ne sont pas suffisantes alors qu'il y a des travailleurs inactifs

J'essaie d'augmenter le nombre de connexions simultanées que mon serveur peut gérer.

$uname -a
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux

$ulimit -Sn
65536

$ulimit -Hn
65536

La configuration de Nginx contient les lignes suivantes :

worker_processes  4; # or 8
worker_rlimit_nofile 60000;

events {
    worker_connections  1024;
}

Il existe également un backend Python asyncio HTTP dormant (dormant à l'infini) utilisé via upstream.

Et après quelques secondes de test de charge :

2016/11/03 05:13:44 [alert] 15#15: 1024 worker_connections are not enough
2016/11/03 05:13:44 [alert] 15#15: 1024 worker_connections are not enough

alors que

$netstat -anvpt | wc -l  
1156   # or twice bigger if there is 8 worker processes.

htop montre qu'il y a 4 (ou 8) processus de travail de nginx et seulement 50% d'un cœur de CPU utilisé (alors que 3 autres cœurs sont inactifs). Un examen plus approfondi de la netstat montre que seuls deux processus de travailleur sont utilisés et que chacun d'entre eux n'a pas pris plus de la moitié des 1024 connexions autorisées (entre les clients et nginx et entre nginx et l'amont).

En outre, nginx et le backend fonctionnent à l'intérieur de docker des conteneurs.

UPD : Si j'augmente worker_connections jusqu'à 10240, je traiterai beaucoup plus de clients et les performances du CPU seront un goulot d'étranglement. Mais la question est de savoir pourquoi je suis confronté au message 1024 worker_connections are not enough tout en ayant encore 2 ou 6 travailleurs inactifs.

1voto

Brad Points 1

J'arrive en retard, mais pour les Googlers, essayez d'augmenter la limite des processus de travail (ou utilisez l'automatisme) :

worker_processes auto;

Según la Documentation Nginx Ils s'influencent directement l'un l'autre :

Il convient de garder à l'esprit que ce nombre inclut toutes les connexions (par exemple, les connexions avec les serveurs mandataires, entre autres), et pas seulement les connexions avec les clients. Une autre considération est que le nombre réel de connexions simultanées ne peut pas dépasser la limite actuelle du nombre maximum de fichiers ouverts, qui peut être modifiée par worker_rlimit_nofile.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X