Desempenho de soquetes unix vs portas TCP

44

Por exemplo, em php-fpm:

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

Existe alguma diferença importante de desempenho entre o uso de ouvintes baseados em soquete unix em portas TCP? (Não apenas para PHP, mas em geral. É diferente para cada serviço?)

    
por Jason 21.09.2013 / 17:18

2 respostas

39

Os soquetes de domínio UNIX devem oferecer melhor desempenho do que os soquetes TCP sobre interface de loopback (menos cópia de dados, menos opções de contexto).

Tenha em atenção que os sockets são apenas acessíveis a partir de programas em execução no mesmo servidor (obviamente, não existe suporte de rede) e que os programas precisam de ter as permissões necessárias para aceder ao ficheiro de sockets.

    
por 21.09.2013 / 17:27
25

Quando você está usando o TCP, também está usando toda a pilha da rede. Mesmo se você estiver na mesma máquina, isso significa que os pacotes são encapsulados e decapsulados para usar a pilha de rede e os protocolos relacionados.

Se você usar soquetes de domínio unix, você não será forçado a passar por todos os protocolos de rede necessários de outra forma. Os soquetes são identificados apenas pelos inodes no disco rígido.

    
por 22.09.2013 / 14:17