文档章节

【转】解决CPU100%的问题

wanghhao
 wanghhao
发布于 2015/07/17 12:44
字数 1235
阅读 44
收藏 0

现今Web容量规划的大多数做法类似:

问:如何测试桥梁的受重力。
答:不断增加压力直到压断之为止。

若客户要求站点需要支持5000用户同时在线,然后我们一般设计支持5000*10%*1.42并发的系统即可。1.42为系数,可以根据实际问题进行调整,而10%是参考众多的站点数据而来。

软件不像桥梁一样,软件的重新建立甚至不需要花费任何费用,所以上述的方法不失为一个好办法。可是模拟真实环境也意味着你永远跑着问题后面。但是郎 咸平教授也说要求完美,是中国即使有四大发明却在现代落后于美国的原因。中国的飞机和人家同一时间研发的,可是人家都出了好几个版本了,我们还一直在研发 中。no作no die在Web开发中意味着no作to die。

不完美,意味着需要经常监控Web的各项指标,在出现问题时不断完善之前的设计。

查找系统的瓶颈

容量规划包含前期的设计预计后期的扩展,一个项目上线一年没有太大问题,说明前期的设计并没有问题,最近却偶尔出行cpu100%的问题。

定位问题

个人总结,一般查找性能瓶颈问题,可以从CPU、DISK IO、内存、SWAP这四处着手。cpu 100%的问就题是怀疑网站出现问题,使用上述手段得到的。

1 CPU检查

使用指令top

可以看到PID 62742的进程,占用的CPU达73.9,并随之上升至100%以上。如果进一步查看进程的线程,可以在shift+h。或者执行

top -h -p 62742

如下

cpu的问题往往都不是CPU的问题,比较绕口,也就是说,绝大多数情况你并不需要升级你的处理器。其往往是由于其它原因造成,我们的例子就是这样的。

2 内存

free -m

虽然使用了20多G,但是还有3g左右,可忽略

  1. Disk io

iostat -c

iowait仅有0.10,很正常,《Web容量规划的艺术》一书中曾经介绍说,其在运维中发现mysql服务的iowait达到46%时网站出行 异常,当他经优化将之降至很小后发现网站读取变正常了。可见这里,iowait等各种指标没有办法设定一个准确的值,40%还是10%代表网站出现了问 题,但是如果指标出现大幅的变化,这是一个有用的信号。

  1. swap

vmsta 1

si/so分别代表数据从硬盘移入内存/数据从内存移入硬盘,bi/bo是写/读硬盘的数据。我们知道,一般我们设置swap分区,以在数据不需要 或者内存资源不够的时候写入swap(硬盘)以节省内存的空间。我们知道这是一个比较好的策略,毕竟内存是比较宝贵的资源,这也是mysql的软件设计时 会充分考虑swap分区使用的原因。但是当内存资源严重不足,或者软件设计的原因造成其不断地需要从硬盘交互数据到内存的时候,这会相比直接从内存读取花 费非常长的时间。

上述的指标除了cpu以外均是正常的。

 

解决CPU100%的问题

造成cpu 100%的进程62742是个java进程,故我们使用jstack工具查看

sudo_10/bin/jstack 62742> cpu_100

还记得上面监控结果中,进程62742其线程中占用cpu最大的前三位PID分别为62757、62758、62759,转换成16进制分别为0xf525、0xf526、0xf527。然后再cpu_100的文件中查找

结果中显示上述的三个线程均在GC内存回收。

小技巧

如何转化16进制,使用win7自带的计算器即可,具体地在菜单"查看"中选择程序设计师,如下图

现在我们知道是GC造成cpu出现100%,为了处理问题,我们可以加大内存或者优化内存回收算法、以及找到造成GC的代码。

使用jmap查看各种类使用的内存情况

使用eclipse Memory Analyzer(下载)进行分析,结果发现两个问题

两个问题都与elasticsearch有关,一个流行的检索产品。想起之前为了监控,部署了logstash,其核心点就是使用elasticsearch实现的。由于服务器比较多,我选择比较廉价的方式,将其移走,然后cpu 15分钟后指标就正常了。指标的恢复和其统计的周期有关,哪怕你解决了问题,它也不会马上恢复正常。


本文转载自:http://51write.github.io/it.html

wanghhao
粉丝 6
博文 17
码字总数 9849
作品 0
广州
部门经理
私信 提问
mysql中事件调度器SET GLOBAL event_scheduler = ON;

确定要 方便的修改 ,mysql配置, 使点击‘查看好友’ ,正常跳转。 相反:cpu100%,无法链接和跳转。

李帅—_—
2011/10/09
1K
4
linux cup 占用100%的问题

这几天我 租的服务器 cup一直100%,服务器关了几天了 kill -9 2568不起作用,服务器刚重启还能执行命令,等一会就卡起了 像这样的 .lz1422756098 .lz1422760765 是什么进程 不知道怎么解决 ...

小猫王
2015/02/01
613
8
冯涛 2017-01-17 工作日报

调整Ratelog的任务处理逻辑,避免cpu100%问题(100%); 设置proxy获取并发数及触发频率,避免cpu100%问题(100%)。

edisondik
2017/01/17
1
0
myeclipse 编辑 JSP 很卡的解决办法!!!

可以在这个jsp上右键->Open with->Myeclipse JSP Editer。默认的是Myelicpse Visual JSP designer这个编辑器非常耗资源,还会出现CPU100%的问题。 更彻底的解决方法是: 在Myeclipse的选项中...

张悟空
2015/01/21
901
0
Windows xp系统特别卡

1、打开任务管理器,查看那些应用程序占用CPU过着内存比较多 2、如果是explorer.exe占用CPU100%,说明某个程序正在后台运行 3、如果是svchost.exe占用CPU100%,说明某个程序正在后台运行 我发...

MrStephen
2017/06/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js动态设置元素高度

this.$refs.xxx.style.height= this.contentHeight; 元素需要绑定

Carbenson
50分钟前
2
0
今天的学习

今天学到了ci框架中的查询语句的where条件语句: 1、$this->db->select('')->from('')->where('id = ??')->get()->result_array();2、$this->db->select('')->from('')->where('id', '??'......

墨冥
今天
2
0
MySQL在高并发下的订单撮合、系统使用、共享锁与排他锁保证数据一致性

前序 距离上次择文发表,两月余久。2018年也即将要结束了,目前的工作依然是与区块链应用相关的,也很荣幸在9月初受邀签约出版暂名为《区块链以太坊DApp实战开发》一书,预计在明年年初出版。...

我最喜欢三大框架
今天
2
0
深入理解Flutter多线程

该文章属于<简书 — 刘小壮>原创,转载请注明: <简书 — 刘小壮> https://www.jianshu.com/p/54da18ed1a9e Flutter默认是单线程任务处理的,如果不开启新的线程,任务默认在主线程中处理。 ...

刘小壮
今天
3
0
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

//有点投机啦 import java.util.ArrayList; public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList <Integer> s=new ArrayLi......

南桥北木
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部