微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx <=> php-fpm:unix socket给出错误,tcp连接很慢

我在高流量网站上运行带有PHP-fpm的Nginx.我让Nginx通过tcp / ip与PHP-fpm进行通信,Nginx和运行在同一服务器上的PHP-fpm池.

当我使用tcp / ip让NginxPHP-fpm池相互通信时,页面加载需要花费几(5-10)秒才能完成任何操作,当它最终运行时,它会花费时间所有的装载完成.由于PHP-fpm的状态页显示监听积压已满,我认为在处理请求之前需要一些时间.
Netstat在TIME_WAIT状态下显示了很多(20k)连接,不知道这是否相关但似乎相关.

当我尝试让NginxPHP-fpm通过UNIX套接字进行通信时,页面实际加载之前的时间几乎没有减少,并且在我的浏览器中完成页面之前的时间减少了1000倍. UNIX套接字的唯一问题是它在日志中给了我很多错误

*3377 connect() to unix:/dev/shm/.PHP-fpm1.sock Failed (11: Resource temporarily unavailable) while connecting to upstream, client: 122.173.178.150, server: nottherealserver.fake, request: "GET somerandomPHPfile HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/.PHP-fpm1.sock:", host: "nottherealserver.fake", referrer: "nottherealserver.fake"

我的两个问题是:

有没有人知道为什么tcp / ip方法在它实际上似乎连接到PHP-fpm后端之前有这么大的等待?

为什么UNIX套接字在使用它而不是tcp / ip时会导致问题?

我尝试了什么:

尝试减少TIME_WAIT连接数时,将net.ipv4.tcp_tw_recycle和net.ipv4.tcp_tw_reuse设置为1(从30k减少到20k)

将net.core.somaxconn值从认值128增加到1024(尝试更高但使用UNIX套接字时仍然是相同的错误)

增加了打开文件的最大数量

什么可能也非常相关:尝试使用lighttpd fastcgi,在最终处理连接之前很长一段时间都有同样的问题. MysqL不是太忙,不应该是等待时间长的原因.磁盘等待时间为0%(SSD磁盘),因此繁忙的磁盘似乎也不是罪魁祸首.

希望有人找到解决这个问题的方法,并愿意分享:)

解决方法:

问题解决后回答我自己的问题(不确定这是否是正确的方法).

我的问题是APC缓存根本没有用.它已安装,配置和启用,但未向其缓存添加任何内容.从APC切换到Xcache后,负载和加载时间大幅下降.仍然不知道为什么APC什么也没做,但此刻我很高兴问题解决了:)

感谢你们的所有意见!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐