使用socket方式连接nginx优化php-fpm性能
nginx连接fastcgi的方式有2种:TCP和unix domain socket, Unix domain sockets 使用系统文件的地址来作为自己的身份。它可以被系统进程引用。所以两个进程可以同时打开一个Unix domain sockets来进行通信。不过这种通信方式是发生在系统内核里而不会在网络里传播。根据相关测试,结论是在服务器压力不大的情况下,tcp和socket差别不大,但在压力比较满的时候,用套接字方式,效果确实比较好。
下面是Ubuntu 16.04 下 PHP 7.0版本将TCP改成socket方式的配置方法:
修改/etc/php/7.0/fpm/pool.d/www.conf文件:
;listen = 127.0.0.1:9000 listern = /dev/shm/php7.0-fpm.sock #/dev/shm是个tmpfs,速度比磁盘快
修改nginx配置文件server段(以默认配置文件为例,/etc/nginx/conf.d/default.conf)的配置,将http的方式改为socket方式:
location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/dev/shm/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
重启php-fpm与nginx即可:
sudo /etc/init.d/php7.0-fpm reload sudo /etc/init.d/nginx reload
抱歉,暂停评论。