Pourquoi «multi_accept» est-il désactivé par défaut dans Nginx?

17

J'ai trouvé que 'multi_accept' est 'off' par défaut dans Nginx comme suit:

multi_accept

Max Zueff
la source

Réponses:

13

Probablement parce que avec on, tous les processus de travail sont actifs et essaient de gérer simultanément toutes les demandes entrantes. Lorsqu'il est désactivé, Nginx décide quel processus enfant doit traiter la demande une par une. Comme Nginx est très efficace dans ce domaine, cela sert probablement bien la plupart des gens. Certains considèrent qu'il est risqué de l'activer, car il peut inonder les connexions des travailleurs avec des demandes. Vos paramètres TCP au niveau du système d'exploitation joueront probablement également un rôle.

JayMcTee
la source
3
J'avais la situation exacte. J'avais essayé de savoir ce que font les commandes automatiques worker_rlimit_nofile, worker_connections et worker_processes. Nginx est un proxy inverse pour une application qui accepte les websockets. La configuration Nginx autorise 50 connexions pour chaque travailleur. Lorsque j'ai deux employés (donc 100 connexions doivent être établies) et que multi_accept est activé, j'obtiens une erreur indiquant que les websockets ne peuvent pas être créées (le travailleur qui a déjà 50 connexions l'essaie ...). Lorsque multi_accept est désactivé, tout fonctionne parfaitement.
Hamburml