分享

阿里云服务器cpu达到100%的解决实例和一些引起的原因

 quasiceo 2016-05-24

阿里云服务器cpu达到100%的解决实例和一些引起的原因

2015年11月27日 | 作者: 管理员 | 分类: 免费空间, 空间域名 |

很多朋友都购买了阿里云的ECS服务器,也就是通常所说的VPS了,但是,在使用过程中,经常会遇到各种各样的问题,比如今天要说的阿里云服务器cpu达到100%,大多数朋友会以为是内存耗尽了,但实际情况远比这个要复杂。免费部落的主机,也碰到了几次这种情况,一般我们都会重启服务器,有时候能解决,有时候不能解决,引起的原因太多。一起来看看一个cpu达到100%的解决实例。

遇到这种情况,首先们需要检查的就是查看网站日志和进程了。

引起服务器cpu达到100%的原因

首先说一下,免费部落的技术有限,见识也不多,这里收集了网上一些原因,一起来看看。

1.云盾扫描占用大量CPU

在某个网站中看到网站访问日志中查看到如下日志:

alycpu1002

这时我们只需要关闭阿里云的云盾即可,在后台就可以直接关闭的。

2.DDOS攻击或者其它攻击

如果碰到这种情况,那么只能从日志中找到攻击的IP,然后屏蔽,但现在的CC攻击或者DDOS攻击,都是不停变换IP的。对于这一点,暂时关站或者使用CDN来迁就一下。

3.配置过低引起

一般出现这种情况,升级配置即可。是否需要升级,您可以看看阿里云ECS是512M带宽够用吗?如何判断是否要升级VPS带宽这篇文章。

另外,阿里云官方有一些关于SQL方面的介绍,内容如下:

表的现象sql执行状态为:sending data,copying to tmp table,copying to tmp table on disk,sorting result,using filesort,locked;

2.解决方式:登陆数据库,show processlist查看当前正在执行的sql,当执行完show processlist后出现大量语句,通常
状态如条1所写,sql有性能问题

a.sending data:sql正从表中查询数据,如果查询条件没有适当索引,会导致sql执行时间过长

b.copying to tmp table on disk:因临时结果集太大,超过数据库规定的临时内存大小,需要拷贝临时结果集到磁盘上

c.sorting result,using filesort:sql正在执行排序操作,排序操作会引起较多的cpu消耗,可以通过添加索引,或
减小排序结果集

不同的实例规格iops能力不同,如,iops为150个,也就是每秒能够提供150次的随机磁盘io操作,所以如果用户的数据量
很大,内存很小,因iops的限制,一条慢sql就有可能消耗掉所有io资源,而影响其他sql查询,对于数据库就是所有的sql
需要执行很长时间才返回结果集,对于应用会造成整体响应变慢。

Discuz论坛插件导致云主机CPU 100%的实例解决过程

这是一个部落从网上找到的案例:

alycpu1001

查看top,命令结果如下:

alycpu1003

检查过程中经常出现2个高CPU的PHP进程,但是截这张图的时候只有一个。

再来看下php-fpm的配置,如下图:

alycpu1004

在这里发现了一个坑死人不偿命的配置,PHP进程最高只能有2个(截图的时候已经被我修改为了20,修改之前是2),所以当这两个PHP进程都出问题的时候,再就没有PHP进程干活了,于是网站就打不开了。

那么来看看PHP进程到底发生了什么问题,如下图:

alycpu1005

可以看到云主机上的PHP进程正在请求220.181.136.41的80端口。

再来看看这个IP到底是哪路神仙,直接百度这个IP地址。

alycpu1006

可以发现,这是sinaapp云平台的IP。

于是到网站根目录里grep查找sinaapp,找到了这个程序(图片是缩小图,点击可放大):

alycpu1007

来看看addon.sinaapp.com的IP:

alycpu1008

看看这个地址是干什么的:

alycpu1009

至此问题已经查清,是由于这个验证插件在addon.sinaapp.com上的接口没有正常运行,导致的本地PHP出错并进入死循环。

对PHP开发者的一点提示:在php5.2.x版本中使用curl方式抓取网络内容超时会导致CPU飙升,但是在5.3+版本中已经修复了这个问题,抓取超时对CPU几乎没有影响。

PHP抓取远程内容最好的方式是curl,不过很多程序可能是出于兼容性的考虑,使用了fsockopen方式来抓取远程内容(curl需要模块支持,虽然大多数环境都已经安装,但不排除少量的没有安装,fsockopen则是PHP内置的函数)。fsockopen超时时在不同PHP版本中的CPU消耗没有测试过,有兴趣的可以研究下。

对于这个案例,相信很多朋友会有点迷惑,但大部分相信应该可以看懂。

 

 

小结

文章内容来源自网络,由免费部落整理发布。

碰到阿里云服务器cpu达到100%的情况,一定要记得检查网站日志。当然,平时在编辑网站时,也应该多注意一点。

文章如未注明来源,皆为免费部落原创,免费部落网站保留所有版权,如需转载,请注明文章转载自:免费部落
本文固定链接:http://www./17079.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多