首页 > 故障排查 > 正文

phpcms v9后台操作奇慢的故障排查
2014-11-09 11:14:24   来源:我爱运维网   评论:0 点击:

网站是使用PHPCMS构建的,做了一次迁移之后,发现后台操作奇慢无比,由于前台是生成静态网页的,感觉倒不是特别明显,今天经于有时间来排查...
网站是使用PHPCMS构建的,做了一次迁移之后,发现后台操作奇慢无比,由于前台是生成静态网页的,感觉倒不是特别明显,今天经于有时间来排查一下原因了。

现象:
后台的各项操作都很慢,无论是导航还是发布。

排查过程:
1、使用chrome浏览后台,打开chrome的开发者工具,发现主要是index.php非常慢,而且每次请求时间都在15s~17s左右;
2、登录服务器,查看index.php,这个文件其实可以,只有几十个字节。但发现php-cgi进程很多;
3、新写了一个PHP,仅包含<?phpinfo()?>,验证下来,PHP响应不慢,说明不是PHP执行与解析的问题;
4、查看php-fpm.log查看,发现里面有如下错误信息:
"postdrop: warning: unable to look up public/pickup: No such file or directory."
这个错误应该是postfix进程没有启动引起,导致无法发送应用的邮件报错。
这是一个附带的发现故障,使用/etc/init.d/postfix start启动邮件发送进程,果然有很多应用积压的邮件开始陆续发出。
5、没有其他的异常,启用 php-fpm 的 slow log 日志,查看执行时间过长的php文件,既可做程序调优,也可作为502等各种问题的分析方法。因此进一步修改php-fpm.conf,打开慢执行php日志,看看问题在哪里:
将php-fpm.conf的这一行配置改成10s:

<value name=”request_terminate_timeout”>10s</value>
该配置默认是0s,即不记录慢执行日志。
6、重新php-cgi。查看slow.log,这次可以看到,有这样的慢日志告警信息:
Nov 08 23:55:07.811440 pid 17636 (pool default) script_filename = /var/html/index.php [0x00007fffef4e77f0] file_get_contents() /data/www/phpcms/class_cache.php(1) : regexp code(1) : eval()'d code(1) : regexp code(1) : eval()'d code(1) : eval()'d code(1) : regexp code(1) : eval()'d code(1) : regexp code(1) : eval()'d code:1 [0x00007fffef4e8b50] is_allow_ip() /data/www/phpcms/class_cache.php(1) : regexp code(1) : eval()'d code(1) : regexp code(1) : eval()'d code(1) : eval()'d code(1) : regexp code(1) : eval()'d code(1) : regexp code(1) : eval()'d code:1 [0x00007fffef4e8d90] +++ dump failed

显然php中使用的file_get_contents()有问题,而且出在class_cache.php这个文件里。

7、找到class_cache.php这个文件,竟然是个加密的PHP文件。不清楚它的用途,然后在百度/google中查找这个文件,包括官方phpcms文档,没有这个文件说明与用途。怀疑是黑客注入留下的文件。

8、备份class_cache.php,并清空这个文件:cp /dev/null class_cache.php。再尝试访问,所有功能都正常,而且速度非常快了,问题就出在这个文件上。更相信class_cache.php是黑客注入留下的文件。

9、故障排除。进行后续跟踪,尝试使用base64 解密这个文件,但不成功。短时间无法解密这个文件,如果有兴趣的朋友,可以尝试解一下密,请联系qudao123@126.com获取加密文件。

相关热词搜索:phpcms 后台 故障

上一篇:nginx与php的WEB常见问题排查
下一篇:Mysql数据库故障维护1例:MYI文件过大

分享到: 收藏
iTechClub广告