Heim > Artikel > Betrieb und Instandhaltung > Was ist der Unterschied zwischen Unix-Socket und TCP-Socket in Nginx?
Es gibt zwei Möglichkeiten für Nginx, eine Verbindung zu fastcgi herzustellen: Unix-Domain-Socket und TCP. Unix-Domain-Socket oder IPC-Socket ist ein Terminal, das es zwei oder mehr Prozessen auf demselben Betriebssystem ermöglicht, miteinander zu kommunizieren. Im Gegensatz zu Pipes können Unix-Domänen-Sockets sowohl Byteströme als auch Datenwarteschlangen verwenden, während die Pipe-Kommunikation nur über Byteströme erfolgen kann. Die Schnittstelle von Unix-Domänen-Sockets ist der von Internet-Sockets sehr ähnlich, verwendet jedoch nicht das zugrunde liegende Netzwerkprotokoll für die Kommunikation. Die Funktion des Unix-Domain-Sockets ist Bestandteil des POSIX-Betriebssystems.
Vergleich zwischen TCP- und Unix-Domain-Socket-Methoden
TCP verwendet den TCP-Port, um eine Verbindung zu 127.0.0.1:9000 herzustellen, und Socket verwendet einen Unix-Domain-Socket, um eine Verbindung zum Socket herzustellen / dev/shm/ php-cgi.sock (Viele Tutorials verwenden den Pfad /tmp, und der Pfad /dev/shm ist ein tmpfs, das viel schneller ist als die Festplatte)
fastcgi_pass unix:/tmp/php-cgi.sock fastcgi_pass 127.0.0.1:9000
Wenn der Server unter Druck steht ist nicht hoch, TCP und Socket Der Unterschied ist nicht groß, aber wenn der Druck relativ hoch ist, ist der Effekt der Verwendung der Socket-Methode tatsächlich besser.
Das Folgende ist die Konfigurationsmethode zum Ändern von TCP in den Socket-Modus in PHP 5.3 und höher:
Ändern Sie php-fpm.conf (/usr/local/php/etc/ php- fpm.conf)
;listen = 127.0.0.1:9000 listen = /dev/shm/php-cgi.sock
Ändern Sie die Konfiguration des Serverabschnitts der Nginx-Konfigurationsdatei und ändern Sie die http-Methode in die Socket-Methode
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; }
Starten Sie php-fpm neu und nginx
service nginx restart service php-fpm restart ls -al /dev/shm
Sie können den Unix-Socket-Typ der Datei php-cgi.sock sehen. Theoretisch geht der Unix-Socket nicht über das Netzwerk und ist effizienter, aber die Stabilität ist nicht sehr ideal.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Unix-Socket und TCP-Socket in Nginx?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!