开发笔记📐 发现👽 人物👮 趣闻💦
phpcms v9后台操作奇慢前台速度正常故障排查

phpcms v9后台操作奇慢前台速度正常故障排查
2017-10-25 11:34:02   点击:

解决方案来自我爱运维网

原文:

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

现象:

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

排查过程:

1、使用chrome浏览后台,打开chrome的开发者工具,发现主要是index.php非常慢,而且每次请求时间都在15s~17s左右;

2、登录服务器,查看index.php,这个文件其实可以,只有几十个字节。但发现php-cgi进程很多;

3、新写了一个PHP,仅包含,验证下来,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:

10s

该配置默认是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 解密这个文件,但不成功。

phpcms 后台 故障

上一篇:AliyunECS怎么买最便宜?最新优惠券享折扣
下一篇:平面设计中有哪些常用的技巧和效果 优设网整理