mtime超前导致opcache失效问题

前几天将业务混乱的jenkins构建流程改到gitlab-ci,dockerfile由9个合并成了一个,通过注入环境变量来决定激活哪些服务模块

各阶段测试都一切正常,发布到其中一个压力不太大的生产环境时发现接口sla响应时间明显变长,非常不能理解,因为本机测试环境没问题,测试环境也不明显,一到生产环境用gitlab-ci就跪,于是乎将dockerfile的写法对齐到老jenkins时代,问题依旧存在

隐约觉得是opcache没有生效,于是试着输出opcache_get_status(),发现hit为0!  再测试include 一个大php文件,发现每次请求光include它就花了几毫秒,检查opcache的配置也是生效中,这就奇怪了。

在debug过程中注意到一点,原来hit为0,但有个别文件被我vi编辑过后,立马就出现在hit列表里了,然后查看了下代码库里的文件时间,好家伙,文件的mtime全是未来时间,opcache的时间检测逻辑估计认为异常,直接忽略,没有生成cache。

最终发现是gitlab配置的 runner时区有问题,修正时间后,问题解决。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注