首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx tcp php-fpm: unix套接字错误,<=>连接速度慢

nginx tcp php-fpm: unix套接字错误,<=>连接速度慢
EN

Stack Overflow用户
提问于 2012-07-24 03:39:02
回答 1查看 4.9K关注 0票数 4

我在一个高流量的网站上用php-fpm运行nginx。我让nginx通过tcp/ip与php-fpm通信,nginx和php-fpm池运行在同一台服务器上。

当我使用tcp/ip让nginx和php-fpm池相互通信时,页面加载需要几秒钟(5-10)秒才能完成任何操作,当它最终开始工作时,完全不需要任何时间完成加载。由于php-fpm的statuspage显示侦听backlog已满,因此我假设在处理请求之前需要一段时间。Netstat在TIME_WAIT状态下显示了很多(20k+)连接,不知道这是否相关,但看起来是相关的。

当我尝试让nginx和php-fpm通过UNIX套接字进行通信时,页面实际加载之前的时间几乎为零,完成的页面进入浏览器之前的时间缩短了1000倍。UNIX套接字的唯一问题是它在日志中给了我很多错误:

代码语言:javascript
复制
*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而不是tcp/ip时会出现问题?

我尝试过的:

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

net.core.somaxconn值从默认的128增加到1024 (也尝试了更高的值,但在使用UNIX套接字时仍然会出现相同的错误)

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-29 05:53:58

回答我自己的问题,因为问题已经解决了(不确定这是不是正确的方法)。

我的问题是APC缓存根本不起作用。它已安装、配置并启用,但没有向其缓存中添加任何内容。在从APC切换到Xcache之后,加载和加载时间有了很大的下降。仍然不知道为什么APC什么都不做,但目前我只是很高兴这个问题得到了解决:)

感谢你们的所有投入!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11619324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档