Nginx basé sur epoll
Avec epoll, un processus peut théoriquement avoir un nombre illimité de connexions sans interrogation, vraiment résolu le problème de c10k . (Apprentissage recommandé : tutoriel vidéo swoole )
Nginx est un programme serveur asynchrone non bloquant basé sur epoll. Naturellement, il est compréhensible que Nginx puisse facilement gérer des millions de connexions simultanées.
Comment swoole gère la concurrence élevée
①Introduction au modèle Reactor
Les programmes non bloquants asynchrones de multiplexage IO utilisent le modèle Reactor classique, comme nom. suggère, est un réacteur, ce qui signifie qu'il ne gère pas lui-même l'envoi et la réception de données. Il ne peut surveiller que les changements d'événement d'un handle de socket (peut également être un pipe, eventfd, signal).
Remarque : Qu'est-ce qu'une poignée ? Le mot anglais handle est handler, qui peut être comparé de manière frappante au manche d’un pot ou d’une cuillère. C'est-à-dire l'identifiant unique de la ressource et l'ID de la ressource. Les ressources peuvent être exploitées via cet ID.
Reactor n'est qu'un générateur d'événements. Les opérations réelles sur le handle du socket, telles que connecter/accepter, envoyer/recv et fermer, sont effectuées dans le rappel.
Le réacteur étant basé sur epoll, chaque réacteur peut gérer d'innombrables demandes de connexion. De cette façon, swoole peut facilement gérer une concurrence élevée.
Configuration nginx :
server { listen 80; server_name www.swoole.com; root /data/wwwroot/www.swoole.com; location / { if (!-e $request_filename){ proxy_pass http://127.0.0.1:9501; } } }
9501 est l'adresse que le serveur swoole écoute. root est défini sur le répertoire des fichiers statiques. Lors de la demande d'un fichier statique, il est traité directement par Nginx. Lorsque le fichier demandé n'existe pas, il est envoyé au serveur Swoole pour traitement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!