web-dev-qa-db-fra.com

Performances des sockets Unix vs TCP ports

Par exemple sur php-fpm:

#listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock

Existe-t-il des différences de performances majeures entre l'utilisation d'écouteurs basés sur socket Unix sur les ports TCP? (Pas seulement pour PHP mais en général. Est-ce différent pour chaque service)? ?)

50
Jason

Les sockets de domaine UNIX devraient offrir de meilleures performances que TCP sockets sur l'interface de bouclage (moins de copie de données, moins de changements de contexte).

Attention cependant, les sockets ne sont accessibles que depuis des programmes qui s'exécutent sur le même serveur (il n'y a évidemment pas de prise en charge réseau) et que les programmes doivent disposer des autorisations nécessaires pour accéder au fichier socket.

45
Martin von Wittich

Lorsque vous utilisez TCP, vous utilisez également la pile réseau entière. Même si vous êtes sur la même machine, cela implique que les paquets sont encapsulés et décapsulés pour utiliser la pile réseau et les protocoles associés.

Si vous utilisez des sockets de domaine Unix, vous ne serez pas obligé de passer par tous les protocoles réseau qui sont requis autrement. Les prises sont identifiées uniquement par les inodes de votre disque dur.

29
Silverrocker