【发布时间】:2017-01-22 23:36:01
【问题描述】:
我有 php 脚本作为 cron 作业运行,广泛使用第三方代码。脚本本身有几千个 LOC。基本上它是数据导入/处理脚本。 (JSON 到 MySQL,但它也会进行大量 HTTP 调用和一些 SOAP)。
现在,性能随着时间的推移而下降。用几条记录(大约 100 条)进行测试时,性能还可以,在 10-20 分钟内完成。运行整体导入(约 1600 条记录)时,一条记录的平均导入时间稳步增长,整个过程需要 24 小时以上,因此至少比预期的时间长 5 倍。
内存似乎不是问题,使用量应有增长,没有意外高峰。
所以,我需要对其进行调试以找到瓶颈。脚本、底层代码库、php 本身、数据库、操作系统或网络部分可能有问题。我现在怀疑某处的某种缓存表现不佳,未命中率接近 100%。
我无法使用 XDebug,配置文件增长太快而无法处理。
所以问题是:如何调试这种脚本?
PHP 版本:5.4.41 操作系统:Debian 7.8 如有必要,我可以拥有 root 权限,并安装工具。但它是生产服务器,理想情况下调试不应该太混乱。
【问题讨论】:
-
绝对没有能力创建一个开发环境,以便您可以对每个部分进行计时并计算运行 1 条记录需要多长时间?另外,你一天中的什么时候运行这个?是从中午开始还是半夜开始?