Производительность сокетов 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 на вашем жестком диске.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.