UNIX套接字
是一种进程间通讯机制(IPC),它可以让运行于同一台机器上的进程间进行双向的数据交换.TCP/IP套接字
可以让运行于不同机器上的进程进行通讯,不过你也可以使用回路网络接口(localhost, 127.0.0.1)让运行同一台机器上的两个进程进行通讯.
所以当两个进程运行于同一台机器上时,UNIX套接字
与TCP/IP套接字
相比开销更小,因为它不使用网络底层协议,降低了很大的开销.
nginx和php-fpm之间默认使用的是TCP/IP套接字
,然后使用回路网络接口进行通讯.我们可以切换到UNIX套接字
来提供性能.
步骤
1.修改php-fpm.conf
将1
listen = 127.0.0.1:9000
注释掉,在下面增加一行1
listen = /tmp/php-fpm.sock
将1
2
3;listen.owner = www
;listen.group = www
;listen.mode = 0660
取消注释.
注: www
是我的nginx服务所属的用户和组,你那可能不一样
2.修改nginx.conf
将1
fastcgi_pass 127.0.0.1:9000
改为1
fastcgi_pass unix:/tmp/php-fpm.sock
3.重启nginx和php-fpm
测试
我使用的测试工具是wrk, 下载地址.
测试机参数: i3双核四线程,4G内存, ubuntu12.04(64位)
使用TCP/IP套接字
使用UNIX套接字
结论
使用TCP/IP套接字
每秒可处理230.46个请求,使用UNIX套接字
每秒可处理8352.26个请求.
可见:
当nginx和php-fpm运行于同一台机器上时,使用UNIX套接字可显著提高性能