针对高延迟(?)用户的长时间PHP执行



我最近在访问者日志中添加了PHP执行时间,以发现代码或数据库中可能存在的问题。时间是以脚本开始和结束之间的microtime()差来度量的。

平均执行时间(包括我自己对站点调试版本的测试)为2-15ms。然后我随机看到一些用户执行+30ms。这些可能是由负载峰值、未缓存的数据库查询或文件系统访问引起的。

我不能理解的是,不时出现的用户执行时间为5-30秒。根据我的测试,这些测试出现在看似随机的页面上,在这些时间里,访问日志上没有任何请求峰值,代码或数据库查询上也没有任何可能导致性能下降的内容。其中90%的请求来自中国,似乎是某种爬虫或机器人。

那么:延迟会影响PHP脚本的执行时间吗?当上一个缓冲区被发送给用户时,PHP执行是否暂停?

我发现另一个线程似乎也有类似的问题,但没有答案:PHP';s执行时间根据互联网/连接延迟而变化?

编辑:
我最终将PHP输出缓冲从4k字节增加到128k字节。现在,典型的执行时间降到了2-6毫秒,不再有随机的、长得离谱的计时了。

我认为延迟会影响PHP的执行时间,这取决于服务器配置,尤其是output_braining和implicit_flush。

此外,还有一些像gethostsbyaddr这样的函数会减慢PHP脚本的运行速度。

也许您可以使用XDebug生成执行跟踪,并查看脚本执行的"时间线"。

最新更新