nginx <=> php-fpm:unix socket给出错误,tcp连接很慢
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了nginx <=> php-fpm:unix socket给出错误,tcp连接很慢,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1779字,纯文字阅读大概需要3分钟。
内容图文
我在高流量网站上运行带有php-fpm的nginx.我让nginx通过tcp / ip与php-fpm进行通信,nginx和运行在同一服务器上的php-fpm池.
当我使用tcp / ip让nginx和php-fpm池相互通信时,页面加载需要花费几(5-10)秒才能完成任何操作,当它最终运行时,它会花费时间所有的装载完成.由于php-fpm的状态页显示监听积压已满,我认为在处理请求之前需要一些时间.
Netstat在TIME_WAIT状态下显示了很多(20k)连接,不知道这是否相关但似乎相关.
当我尝试让nginx和php-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什么也没做,但此刻我很高兴问题解决了:)
感谢你们的所有意见!
内容总结
以上是互联网集市为您收集整理的nginx <=> php-fpm:unix socket给出错误,tcp连接很慢全部内容,希望文章能够帮你解决nginx <=> php-fpm:unix socket给出错误,tcp连接很慢所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。