背景:
一家网站,帝国程序CMS,网站发布内容数据较多,症状是8核心cpu常常都满载
top 查看的情况是 php-cgi 进程满载,判断可能是1)访问量大或者被攻击,2)php代码问题
网站经过CDN,按理说,不应该造成大量的访问,出现问题完全是php代码访问造成,
本来服务器运行的是 spawn-cgi 来启动的php-cgi进程 , 后来改为php-fpm 也仍然是cpu满载,判断问题在php程序,开启 php-fpm 的slow.log 功能,把运行缓慢的php代码,记录起来,立刻发现了问题!!!
根据slow.log 的情况,发现是一些更新网页代码,被当作 script 脚本 在网页里面,而那个更新脚本运行缓慢,当大量用户来的时候,造成了cpu满载,经过更换脚本名称,cpu立刻下降到正常水平。
解决方案:
把一些更新操作用linux的定时任务去完成,从而避免了放到网页里面。