Cela est dû au fait que Nginx utilise le dernier modèle d'E/S réseau epoll (noyau Linux 2.6) et kqueue (freebsd), tandis qu'Apache le traditionnel le modèle sélectionné est utilisé. (Apprentissage recommandé : Tutoriel Nginx)
Actuellement, Squid et Memcached sous Linux qui peuvent supporter un accès simultané élevé utilisent le modèle d'E/S réseau epoll.
Pour gérer la lecture et l'écriture d'un grand nombre de connexions, le modèle d'E/S réseau sélectionné adopté par Apache est très inefficace.
Ce qui suit utilise une métaphore pour analyser la différence entre le modèle select utilisé par Apache et le modèle epoll utilisé par Nginx :
Supposons que vous étudiiez en collège, Le dortoir dans lequel vous vivez comporte de nombreuses chambres et vos amis viennent vous trouver.
Dans la version sélectionnée, l'hôtesse emmènera vos amis de pièce en pièce jusqu'à ce qu'ils vous trouvent.
La version epoll de la tante du dortoir notera d'abord le numéro de chambre de chaque étudiant. Lorsque votre ami arrive, il vous suffit de dire à votre ami dans quelle chambre vous vivez, sans avoir à amener votre ami avec vous. personnellement. Je cherchais des personnes dans le bâtiment.
Si 10 000 personnes viennent et veulent retrouver leurs camarades de classe qui vivent dans ce bâtiment, il va de soi qui est le plus efficace dans la version select ou la version epoll de la tante dortoir.
De même, sur les serveurs à haute concurrence, l'interrogation des E/S est l'une des opérations les plus chronophages. Il est également très clair quelles performances sont les plus élevées entre select et epoll.
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!