GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unix-Socket vs. TCP/IP-Host:Port

Lösung 1:

Unix-Sockets sind etwas schneller, da Sie den TCP-Overhead nicht haben. Wenn Sie feststellen, dass dieser Leistungsverlust eine Frage der Serverlast ist. Wenn Sie keine sehr hohe Serverlast haben, werden Sie es nicht erkennen.

Wenn Sie Jails (FreeBSD) oder eine andere Virtualisierungstechnologie verwenden, um die z.B. MySQL-Server vom Webserver, verwenden Sie oft das TCP/IP-Setup anstelle von Sockets. Die Firewall-Regeln müssen den Zugriff jedoch einschränken.

Sie müssen herausfinden, ob Ihr System so stark ausgelastet ist, dass ein Socket ein Muss ist, oder ob Sie sich auf ein schönes Systemdesign konzentrieren können (Trennung von Diensten), dann wäre eine TCP/IP-Lösung besser.

Machen Sie also eine lange Antwort kurz:

Ja, es gibt einen Leistungsunterschied, Steckdosen sind schneller. Wenn Sie nicht unter hoher Serverlast leiden, wählen Sie einfach, was besser zum Design Ihres Systems passt.

Lösung 2:

Es ist im Grunde ein Kompromiss zwischen Leistung und Flexibilität. Unix-Domain-Sockets bieten Ihnen eine etwas bessere Leistung, während ein mit localhost verbundener Socket Ihnen eine etwas bessere Portabilität bietet. Sie können die Server-App einfach auf ein anderes Betriebssystem verschieben, indem Sie einfach die IP-Adresse von localhost in einen anderen Hostnamen ändern.

Ein Unix-Domain-Socket verwendet das lokale Dateisystem, um einen IPC-Mechanismus zwischen den Server- und Client-Prozessen zu erstellen. Sie werden irgendwo eine Datei in /var sehen, wenn der Unix-Domain-Socket verbunden ist.

Wenn Sie nur nach der ultimativen Leistungslösung suchen, sollten Sie sich einen Shared Memory IPC ansehen. Aber das ist ein bisschen komplexer.

Lösung 3:

Vorteile von Unix-Domain-Sockets.

  1. Der Zugriff kann über das Unix-Benutzerberechtigungssystem verwaltet werden, indem entweder die Berechtigungen für den Socket selbst festgelegt werden oder indem der Server den Benutzernamen des sich verbindenden Clients liest.
  2. Weniger Chance, die Steckdose versehentlich der Außenwelt auszusetzen. Wenn der Server beispielsweise auch einen Web-Proxy ausführt, kann dieser versehentlich Verbindungen zu Sockets auf localhost zulassen.

Nachteile von Unix-Domain-Sockets

  1. Nicht auf Nicht-Unix-Systeme portierbar.
  2. Kann mit Chroots, Jails oder ähnlichem umständlich sein

Linux
  1. IP/Port-Umleitung mit csf

  2. Unterschied zwischen UNIX-Domain-STREAM- und DATAGRAM-Sockets?

  3. Leiten Sie den Host-Port an den Docker-Container weiter

  4. Linux, Sockets, nicht blockierende Verbindung

  5. Leistungsstarke TCP-Socket-Programmierung in .NET C#

So verbinden Sie NGINX mit PHP-FPM über UNIX oder TCP/IP Socket

Erstellen Sie eine virtuelle serielle Portverbindung über TCP

Localhost-TCP/IP-Kommunikation in einem Programm verwenden - immer sicher?

Überwachen Sie den TCP-Verkehr an einem bestimmten Port

Beenden Sie den Prozess, der auf Port 80 ausgeführt wird

Wann sollte TCP SACK deaktiviert werden?