Производительность сокетов unix против портов TCP

47

Например, на php-fpm:

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

Существуют ли существенные различия в производительности между использованием прослушивателей на основе сокетов Unix через TCP-порты? (Не только для PHP, но и вообще. Отличается ли он для каждого сервиса?)

Джейсон
источник

Ответы:

42

Доменные сокеты UNIX должны обеспечивать лучшую производительность, чем сокеты TCP через интерфейс обратной связи (меньше копирование данных, меньше переключений контекста).

Однако следует помнить, что сокеты доступны только из программ, работающих на одном сервере (очевидно, что поддержка сети отсутствует), и что программы должны иметь необходимые разрешения для доступа к файлу сокета.

Мартин фон Виттих
источник
25

Когда вы используете TCP, вы также используете весь сетевой стек. Даже если вы находитесь на одной машине, это означает, что пакеты инкапсулированы и декапсулированы для использования сетевого стека и соответствующих протоколов.

Если вы используете доменные сокеты Unix, вам не придется проходить через все сетевые протоколы, которые требуются в противном случае. Гнезда идентифицируются только по inode на вашем жестком диске.

Silverrocker
источник