vps广告

VPS 网站CPU负载100%怎么办?

五彩互联编辑部发布时间:2019-01-24 09:43:33浏览:0
摘要:   经常有站长在我们东坡网的群里问网站cpu100%怎么办,网站速度慢怎么办,一直想写篇文章教大家,但不得空。这几天刚好有一位站长也为此困扰,我帮他优化了一下,效果良好,这里记录

   经常有站长在我们东坡网的群里问网站cpu100%怎么办,网站速度慢怎么办,一直想写篇文章教大家,但不得空。这几天刚好有一位站长也为此困扰,我帮他优化了一下,效果良好,这里记录一下一下优化过程,给有需要的站长参考。

  这位站长的网站基本情况是这样的:服务器上有2个网站,总IP3w,PV约30w,8核16G,带宽不详,宝塔面板,lamp。最近几天网站网站大部分时间处于负载100%情况。

  接到任务后,就拿到了服务器的root账号密码,网站后台账号密码。登录网站后台,发现2个网站一个是帝国cms7.2,一个是帝国cms7.5.

  一、用top命令查看网站负载情况

  发现一个问题:每当cpu100%时,mysqld程序占cpu比较高,而且php-fpm进程数量大幅度增加。另外内存使用不多,有富余。

  二、检查一下服务器环境配置

  (1)还用的是PHP5.3

  这个不能忍,都9012年了,升级到PHP7.1

  PHP升级完后网站程序发生问题,ecms7.2的那个站不支持php7,于是给程序打补丁;有个插件在php7下也不能正常运行,出现乱码,修正。

  (2)php-fpm的性能配置错误

  原来用的是动态,50线程的设置,这个肯定不够。鉴于这台机器16G富余的大内存,调整为静态,500线程。

  以上2个操作后,持续观察24小时,发现负载100%的情况相较之前有较大幅度减少,但还在难以接受的范围内,继续优化。

  三、查看服务器日志

  (1)php-fpm的慢日志

  打开慢日志slow.log发现,网站使用的一款前台关键性插件,经常性超时。解决方法:使用动态缓存插件

  (2)mysql的慢日志

  此服务器的mysql慢日志没有开启,只能手动开启,然后等待。打开日志后,发现问题

  select searchid,keyboard from phome_enewssearch where iskey=0 and classid='7' order by onclick desc limit 4;

  update phome_ecms_news set onclick=onclick+1 where id='5635' limit 1;

  以上两种语句,经常执行时间超过5秒,再对照时间与面板的负载曲线时间,基本吻合,至此找到问题的关键症结。

  分析第一个sql语句,发现这是网站使用了热门搜索词标签导致的,其实这个标签在前台根本没有效果,客户写标签就是错误的,果断在模板里删除这个热门搜索功能。

  第二个语句,是动态页中的点击统计,这个语句每天执行约30w次,锁表并发不够导致问题,所以在动态页中屏蔽了这个统计,改用其它方法统计点击。

  ------------------------

  至此,网站的负载100%问题解决。

  插曲:在修改后观察网站负载过程中,有天凌晨负载突然升高,查看网站访问日志,发现有可疑IP段访问网站,防火墙禁用之。

    联系我们