Maison  >  Article  >  Opération et maintenance  >  Quelle est la différence entre le socket Unix et le socket TCP dans Nginx

Quelle est la différence entre le socket Unix et le socket TCP dans Nginx

WBOY
WBOYavant
2023-05-16 13:37:061627parcourir

Il existe deux manières pour Nginx de se connecter à fastcgi : le socket de domaine Unix et le socket de domaine Unix ou le socket IPC est un terminal qui permet à deux processus ou plus sur le même système d'exploitation de communiquer des données. Contrairement aux canaux, les sockets de domaine Unix peuvent utiliser à la fois des flux d'octets et des files d'attente de données, tandis que la communication par canal ne peut s'effectuer que via des flux d'octets. L'interface des sockets de domaine Unix est très similaire à celle des sockets Internet, mais elle n'utilise pas le protocole réseau sous-jacent pour communiquer. La fonction du socket de domaine Unix est un composant du système d'exploitation POSIX.

Comparaison entre les méthodes de socket de domaine TCP et Unix

TCP utilise le port TCP pour se connecter 127.0.0.1:9000, Socket utilise le socket de domaine Unix pour connecter le socket /dev/shm/php-cgi.sock (de nombreux tutoriels utilisent le chemin /tmp , et le chemin /dev/shm est un tmpfs, qui est beaucoup plus rapide que le disque)

fastcgi_pass unix:/tmp/php-cgi.sock
fastcgi_pass 127.0.0.1:9000

Lorsque la pression du serveur n'est pas élevée, il n'y a pas beaucoup de différence entre tcp et socket, mais lorsque la pression est relativement pleine, utilisez la méthode socket. L'effet est en effet meilleur.

Voici la méthode de configuration pour passer TCP en mode socket dans PHP 5.3 et supérieur :

Modifier php-fpm.conf (/usr/local/php/etc/php-fpm.conf)

;listen = 127.0.0.1:9000
listen = /dev/shm/php-cgi.sock

Modifier la configuration nginx Configuration de la section serveur de fichiers, changez le mode http en mode socket

location ~ .*.(php|php5)?$
{
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}

Redémarrez php-fpm et nginx

service nginx restart
service php-fpm restart
ls -al /dev/shm

Vous pouvez voir le type de socket unix du fichier php-cgi.sock En théorie, le socket unix ne passe pas par le. réseau et est très efficace, mais la stabilité n'est pas idéale.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer