Sollten wir für die Kommunikation zwischen Nginx und PHP-FPM Unix-Socket oder TCP verwenden?

藏色散人
Freigeben: 2023-04-08 06:58:01
nach vorne
4754 Leute haben es durchsucht

Vorwort

Es gibt zwei Kommunikationsmethoden zwischen Nginx und Fastcgi, eine ist die TCP-Methode und die andere ist die Unix-Socket-Methode. Beide Methoden haben ihre eigenen Vor- und Nachteile. Hier werden zunächst zwei Konfigurationsmethoden vorgestellt und dann die Leistung, Sicherheit usw. zusammengefasst.

TCP verwendet den TCP-Port, um eine Verbindung herzustellen 127.0.0.1:9000

Socket verwendet einen Unix-Domänen-Socket, um eine Verbindung zum Socket /dev/shm/PHP-cgi.sock herzustellen (viele Tutorials verwenden den Pfad /tmp , und der Pfad /dev/shm ist tmpfs, was viel schneller ist als die Festplatte. Wenn der Serverdruck nicht hoch ist, gibt es keinen großen Unterschied zwischen TCP und Socket, aber wenn der Druck relativ hoch ist, hat die Socket-Methode einen großen Unterschied ein echter Effekt.

Konfigurationsanleitung

1. TCP-Konfigurationsmethode

Die TCP-Kommunikationskonfiguration ist sehr einfach und kann in drei Schritten durchgeführt werden

Erster Schritt: Bearbeiten Sie /etc/nginx/conf.d/Ihre Site-Konfigurationsdatei (wenn Sie die Standardkonfigurationsdatei verwenden, ändern Sie /etc/nginx/sites-available/default)

Ändern Setzen Sie den Parameter fastcgi_pass auf 127.0.0.1:9000, etwa so:

location ~ \.php$ {
      index index.php index.html index.htm;
      include /etc/nginx/fastcgi_params;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi_params;
 }
Nach dem Login kopieren

Der zweite Schritt besteht darin, die PHP-FPM-Konfigurationsdatei /etc/php5/fpm/pool.d/www.conf

< zu bearbeiten 🎜 >Ändern Sie den Listen-Parameter wie folgt auf 127.0.0.1:9000:

listen=127.0.0.1:9000
Nach dem Login kopieren

Der dritte Schritt: PHP-FPM neu starten, Nginx neu starten

2. Unix-Socket-Konfigurationsmethode

Unix-Socket sollte eigentlich als Unix-Domain-Socket bezeichnet werden. Es handelt sich um eine weit verbreitete Methode der Interprozesskommunikation (IPC), in der Dateien (normalerweise .sock) verwendet werden Als einziger Socket-Bezeichner (Deskriptor) können zwei Prozesse, die kommunizieren müssen, einen Kommunikationskanal einrichten, indem sie auf dieselbe Socket-Deskriptordatei verweisen.

Unix-Domain-Socket oder IPC-Socket ist ein Terminal, das es zwei oder mehr Prozessen auf demselben Betriebssystem ermöglicht, Daten 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. Unix-Domänensockets verwenden die Adresse einer Systemdatei als ihre Identität. Es kann von Systemprozessen referenziert werden. So können zwei Prozesse gleichzeitig einen Unix-Domänen-Socket öffnen, um zu kommunizieren. Diese Kommunikationsmethode findet jedoch im Systemkern statt und verbreitet sich nicht im Netzwerk.

Die Konfiguration erfordert fünf Schritte

Der erste Schritt besteht darin, den Speicherort Ihrer Socket-Deskriptordatei zu bestimmen.

kann an einer beliebigen Stelle im System abgelegt werden. Wenn Sie eine schnellere Kommunikationsgeschwindigkeit wünschen, können Sie es unter /dev/shm ablegen, einem Bereich, der direkt von verwendet werden kann RAM. Daher ist die Lesegeschwindigkeit sehr hoch.

Nachdem Sie den Dateispeicherort festgelegt haben, müssen Sie die Berechtigungen der Datei für Nginx und PHP-FPM ändern. Sie können Folgendes tun:

sudo touch /dev/shm/fpm-cgi.sock
sudo chown www-data:www-data /dev/shm/fpm-cgi.sock
sudo chmod 666 /dev/shm/fpm-cgi.sock
Nach dem Login kopieren

Der zweite Der Schritt besteht darin, die PHP-FPM-Konfigurationsdatei /etc/php5/fpm/pool.d/www.conf zu ändern.

Ändern Sie den Listen-Parameter in /dev/shm/fpm-cgi.sock, etwa so:

listen=/dev/shm/fpm-cgi.sock
Nach dem Login kopieren

Ändern Sie den Parameter listen.backlog auf -1. Der Standardwert ist 128. Wenn die Parallelität hoch ist, wird ein Fehler gemeldet

 ; Set listen(2) backlog. A value of &#39;-1&#39; means unlimited.
 ; Default Value: 128 (-1 on FreeBSD and OpenBSD)
 listen.backlog = -1
Nach dem Login kopieren

Der dritte Schritt ist die Änderung die Nginx-Site-Konfigurationsdatei

Ändern Sie den Parameter fastcgi_pass in unix:/dev/shm/fpm-cgi.sock, wie folgt:

location~\.php${
      indexindex.phpindex.htmlindex.htm;
      include/etc/nginx/fastcgi_params;
      fastcgi_passunix:/dev/shm/fpm-cgi.sock;
      fastcgi_indexindex.php;
      includefastcgi_params;
}
Nach dem Login kopieren

Der vierte Schritt besteht darin, /etc/sysctl zu ändern .conf-Datei, um die Anzahl gleichzeitiger Verbindungen auf Kernel-Ebene zu erhöhen

sudo echo&#39;net.core.somaxconn = 2048&#39;>>/etc/sysctl.conf
sudo sysctl-p
Nach dem Login kopieren
Der fünfte Schritt: Starten Sie die Nginx- und PHP-FPM-Dienste neu (am besten starten Sie zuerst PHP-FPM und dann NginX neu)

ps: Wenn Nginx den Lastausgleich durchführt, denken Sie überhaupt nicht an einen Unix-Socket. Die einzige Möglichkeit ist die Verwendung von TCP.

Weitere PHP-Kenntnisse finden Sie im

PHP-Tutorial!

Das obige ist der detaillierte Inhalt vonSollten wir für die Kommunikation zwischen Nginx und PHP-FPM Unix-Socket oder TCP verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:lukachen.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!