php-fpm TCP通讯改成unit socket通讯php
原理上来讲,unix socket方式确定要比tcp的方式快并且消耗资源少,由于socket之间在nginx和php-fpm的进程之间通讯,而tcp须要通过本地回环驱动,还要申请临时端口和tcp相关资源,unix socket会显得不是那么稳定,当并发链接数爆发时,会产生大量的长时缓存,在没有面向链接协议支撑的状况下,大数据包颇有可能就直接出错并不会返回异常。而TCP这样的面向链接的协议,多少能够保证通讯的正确性和完整性。nginx
touch /var/run/php-fcgi.sock chmod 777 /var/run/php-fcgi.sock chown nginx. /var/run/php-fcgi.sock
修改www.conf缓存
listen = /var/run/php-fcgi.sock listen.owner = nginx listen.group = nginx listen.mode = 0666 user = nginx group = nginx
修改nginx配置文件;cookie
# fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php-fcgi.sock;
修改sysctl.conf;session
# vi /etc/sysctl.conf net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 # sysctl –p
//上面参数是必须的,1是增长端口数量,2是减小time_wait链接过多 并发
先restart php-fpm
而后:nginx -s stop
Nginx
不能用restart,会出错,解决步骤:socket
ps -aux | grep nginx | awk ‘{print $2}’| xargs kill -9
进行测试tcp
www.conf示例内容:ide
[www] ;listen = 127.0.0.1:9000 listen = /var/run/php-fcgi.sock listen.allowed_clients = 127.0.0.1 listen.owner = nginx listen.group = nginx listen.mode = 0666 pm = dynamic pm.max_children = 1000 pm.start_servers = 150 pm.min_spare_servers = 50 pm.max_spare_servers = 1000 pm.max_requests = 1000 slowlog = /var/log/php-fpm/www-slow.log php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache