Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was ist der Unterschied zwischen Unix-Socket und TCP-Socket in Nginx?

Was ist der Unterschied zwischen Unix-Socket und TCP-Socket in Nginx?

WBOY
WBOYnach vorne
2023-05-16 13:37:061684Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen