实际遭遇GC回收造成的Web服务器CPU跑高
今天下午有段时间访问园子感觉不如以前那么快的流畅,上Web服务器一看,果然,负载均衡中的1台云服务器CPU跑高。

上图中红色曲线表示的是CPU占用率。正常情况下,CPU占用率一般在40%以下。
这台云服务器是2台主力Web服务器(承担了80%以上的访问量)中的1台,8核CPU/8G内存,用的是阿里云的临时磁盘云服务器,之前一直表现出色,今天怎么突然CPU跑高呢?难道临时磁盘云服务器的CPU也有问题?向阿里云提交工单,得到的反馈是云服务器所在的物理机表现良好。
为了尽快解决问题,我们在负载均衡中新加了1台云服务器,将这台云服务器撤下,然后奇怪现象出现了:

在没有任何访问请求的情况下,CPU占用竟然一直在50%左右。
打开Windows任务管理器一看,50%的CPU一直被IIS进程占用着,并且IIS进程占用了5G以上的内存。

我们判断可能是GC回收引发的CPU消耗,理由很简单——在没有任何请求的情况下,依然在拚命工作的唯有GC(Garbage Collection)。于是我们立即回收IIS应用程序池(GC在回收,我们回收GC),进行了2次回收操作,才回收掉。回收之后,CPU占用立马下降。

然后把这台云服务器重新投入战斗,立即恢复为之前正常的战斗状态。
Web服务器恢复了战斗状态,而我们则要更加努力的战斗——优化代码,减轻GC的压力。
实际遭遇GC回收造成的Web服务器CPU跑高的更多相关文章
- [故障公告] 13:52-14:03,访问量突增,博客web服务器CPU 100%
13:52-14:03,由于访问量突增,博客web服务器全线CPU 100%,造成博客站点不正常访问,由此给您带来麻烦,请您谅解. 为了迎接访问量的增长给web服务器CPU带来的巨大压力,上周我们已经 ...
- 服务器CPU使用率高的原因分析与解决办法
我们的服务器在使用操作系统的时候,用着用着系统就变慢了,打开“ 任务管理器 ”一看,才发现CPU使用率达到80%以上.这是怎么回事情呢?遇到病毒了吗?硬件有问题?还是系统设置有问题呢?在本文中将从硬件 ...
- 服务器cpu过高修复:操作系统内核bug导致
服务器cpu过高修复:操作系统内核bug导致修改系统内核参数/etc/sysctl.conf添加下面2条参数:vm.dirty_background_ratio=5vm.dirty_ratio=10
- 线上服务器CPU彪高的调试方式
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/2fee7b91-f ...
- 如何优雅排查现网服务器cpu飙高的问题
1.排查现网服务器cpu飙高问题的思路 1.查看java进程id ps -ef|grep java 2.使用top -Hp 进程id 查看cpu比较高的线程 3.执行jstack 进程id > ...
- 记一次查内存异常问题(续《记一次Web应用CPU偏高》)
继上一次查应用的CPU飙高问题(http://www.cnblogs.com/hzmark/p/JVM_CPU.html)过去10天了.上次只是定位到了是一个第三方包占用了大量的CPU使用,但没有细致 ...
- 记一次Web应用CPU偏高
LZ开发的一个公司内部应用供查询HIVE数据使用.部署上线后总是会出现CPU偏高的情况,而且本地测试很难重现.之前出现几次都是通过直接重启后继续使用,因为是内部使用,重启一下也没有很大影响(当然,每次 ...
- 服务器CPU很高,频繁FullGC排查小总结
可以分为如下步骤: ①通过 top 命令查看 CPU 情况,如果 CPU 比较高,则通过 top -Hp 命令查看当前进程的各个线程运行情况. 找出 CPU 过高的线程之后,将其线程 id 转换为十六 ...
- 性能测试 | 服务器CPU使用率高分析实例
前面我们讨论系统调用的时候结论是耗时200ns-15us不等.不过我今天说的我的这个遭遇可能会让你进一步认识系统调用的真正开销.在本节里你会看到一个耗时2.5ms的connect系统调用,注意是毫秒, ...
随机推荐
- oracle 11g expdp impdp详细使用方法
11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法如下图: 二.oracle10g以后提供了expdp/impdp工具,同样可以解决此问题 1.导出expdp工具使用方法: ...
- *204. Count Primes (siecing prime)
Count the number of prime numbers less than a non-negative number, n. Example: Input: 10 Output: 4 E ...
- CRUD全栈式编程架构之控制器的设计
页面 这里界面我采用jquery miniui来做的,当你完全了解了整个设计之后可以轻松切换到其他的js框架,个人认为类似muniui,easyui等等这类可以将web界面做得和winform类似的框 ...
- C++学习之拷贝构造函数
嘛是拷贝构造函数? 如果一个构造函数的第一个参数是’自身类‘ ‘类型’的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数.如: [代码1] 1 2 3 4 5 6 class A{ publ ...
- HDU(3560)成环,并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3560 并查集查有几个块,修改了之前我的一个方法(用什么map),直接判断根节点的id是i的个数. 然后 ...
- P2082 区间覆盖(加强版)
题目 #include<iostream> #include<algorithm> #include<cstring> using namespace std; s ...
- 修改SVN的地址
方法 1:右键在工作复本的根目录上右键->TortoiseSVN->重新定位 (Relocate),然后修改URL就可以了,但最好先备份一下,据说这样的操作有一定的危险性(至今我没有发现) ...
- Error:linker command failed with exit code 1 (use -v to see invocation) - iOS
今天在操作 CoreData 时,创建完 Create NSManagedObject Subclass... 后,工程中会自动生成四个文件,如下图所示: 此时此刻便以工程,激动人心的时刻来临了 ...
- Git学习第一天--安装Git和创建版本库
Windows上安装Git msysgit是Windows版的Git,从https://git-for-windows.github.io下载(备份:百度网盘),然后按默认选项安装即可. 安装完成后, ...
- spring开篇
本文引用http://www.cnblogs.com/ityouknow/p/5292559.html spring简介: spring是一个开源框架,spring是于2003 年兴起的一个轻量级的J ...