unix 套接字与 TCP 端口的性能

unix 套接字与 TCP 端口的性能

例如在 php-fpm 上:

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

通过 TCP 端口使用基于 UNIX 套接字的侦听器之间是否存在重大性能差异? (不仅适用于 PHP,而且一般而言。每个服务都有不同吗?)

答案1

UNIX 域套接字应该通过环回接口提供比 TCP 套接字更好的性能(更少的数据复制、更少的上下文切换)。

请注意,套接字只能从同一服务器上运行的程序访问(显然没有网络支持),并且程序需要具有访问套接字文件的必要权限。

答案2

当您使用 TCP 时,您也在使用整个网络堆栈。即使您在同一台计算机上,这也意味着数据包将被封装和解封装以使用网络堆栈和相关协议。

如果您使用 unix 域套接字,您将不会被迫执行其他所需的所有网络协议。套接字仅由硬盘驱动器上的索引节点标识。

相关内容