您的位置:首页 > 其它

CPU、内存、IO负载过高排障方法及解决方案

2016-11-19 23:41 871 查看
内存使用过高处理方法:

查询手段
使用top查看,

处理方法
1、将没有用的进程杀掉
2、查看占用进程高的应用的日志,对其做相应用的优化
3、增加内存
或者通过pstack这些工具去查对应进程的pid对系统调用的情况来定位故障原因。

CPU负载过高处理方法:

查询手段:
CPU资源负载过高,可通过使用top命令查出对应cpu资源使用率高的进程,

分析原因:
根据进程判断是什么应用,再去查对应应用的访问量大小,以及日志去定位是因为访问量过大导致,还是因为性能的原因导致。

处理方法:
如果是访问量导致的,那就要考虑服务器扩容,通过lvs做服务的负载均衡来分担了。
如果是性能的问题,通常通过日志可以查到慢查询的代码的。将慢查询的日志整理给到开发,让开发去做优化就可以了。

IO负载过高处理方法

查询手段:
IO过高,可通过iostat与iotop去检查,iotop可以查到哪个进程的IO比较高的。也用同样的方法去查原因。

分析原因:
IO比较高通常出现在数据库或写的日志量非常大,或应用访问量非常大而产生大量的日志写磁盘的原因导致的。

处理方法:
因为读数据库导致IO过高,通常是慢查询导致的,可以查mysql的慢查询的命令,让开发去做优化。
如果是web访问量过大而导致大量写日志的,可以考虑暂时将日志关闭,或优化日志,将部分对查障没有帮助的日志采用屏蔽的方法减低日志写入磁盘的量的方法减小IO。

比如有些开发可能会对php或tomcat或resin开debug的,这种日志可以关闭掉的。nginx的日志格式也可以调的,可以屏蔽掉部分关键字的日志输出的。

因为写数据库导致IO过高,处理方法如下
1、增加db的缓存的内存参数,先让数据写入内存,再写磁盘。
2、建议开发做优化,可以将数据缓存到程序内存,然后达到多大的数据量,或每隔几秒再写磁盘。
3、升级硬盘,将硬盘换成SSD硬盘。

游戏卡原因:
卡的问题,无非就几个可能行。
1、网络不稳定或丢包(地区性的网络不稳定,机房网络不稳定)
2、服务器负载高(访问量过高,代码质量问题导致的负载高,数据库的命令未做优化的负载高,IO操作过多导致的负载高)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  性能 调优