apache+ PHP 后端,超时问题

344 天前
 yagamisam
https://stackoverflow.com/questions/56535851/delay-in-few-seconds-apache-response
在 stackoverflow 上找到一个几乎一模一样的现象,但是下面好像没有答案,大家有遇到过并且解决了的吗?
1276 次点击
所在节点    PHP
9 条回复
zpfhbyx
344 天前
fpm.slow.log 开一下看看
yagamisam
344 天前
@zpfhbyx 这个是看 php 运行缓慢的吗?好像不太一样。
这边看起来像是 php 把数据返回给 apache 了,但是 apache 在大概 10 秒后才会发出网络包。
这个系统平均并发在 600 左右。每天只会出现这个情况大概 300-400 次。
zpfhbyx
344 天前
你可以怀疑自己的代码..也不要怀疑 fpm 跟 apache...
zpfhbyx
344 天前
他们出事故的概率很低.
8355
344 天前
其实就是你 phpfpm 的进程被并发打满导致的。
假设你的每次请求执行需要 10 秒 fpm 有 3 个进程,只需要 3 个请求就可以占满所有。
apache 的超时时间也是 10 秒 此时第 4 个请求进来就没有 fpm 去处理了,会由 apache 超时返回。
这个是很基础的东西了,跟什么语言后端没什么关系。

可以尝试看一下 php 配置文件的 max_child 是不是设置过小,可以尝试调大和附近几个相关的配置
yagamisam
344 天前
@8355 我检查一下这个看看。因为这是个私有化部署的系统,细节和技术方面我这边也不算太懂。
上面的描述可能有误,并不是 apache 返回超时。
第三方系统'C'向我们系统请求 api ,因为我们返回的太慢,C 系统弹窗提示超时。不过看 apache 的日志,虽然慢了很多,但还是把数据返回过去了的。
还有个细节是,假设 C 系统向我这边发了 123456 个请求,可能 2 会慢,但是 13456 会正常发出。
8355
344 天前
@yagamisam #6 猜到了,外包项目一般不给调配置,你就检查这个吧,开大点就行了。
C603H6r18Q1mSP9N
344 天前
如果是因为并发上来了,加服务器 吧
abccccabc
276 天前
Àfter few days struggling find out, now it clearly my memcached touch function took the extra time. It hurt when xdebug never capture the delay and now im working to fix.it.. Anyway thank for all of you willing to help.

人家不是回复了吗?我英文不好,猜测是 memcached 的问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1006723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX