一:背景 1. 前言 大概有2个月没写博客了,不是不想写哈…
最近在测试一个用java语言实现的数据采集接口时发现,接口一旦运行起来,CPU利用率瞬间飙升到85%-95%,一旦停止就恢复到40%以下,这让我不得不面对以前从未关注过的程序性能问题. 在硬着头皮查找资料定位错误修正bug的过程中参考了下面两篇文章: windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码:http://blog.csdn.net/hexin373/article/details/8846919 java程序cpu占用过高问题分析:http://ww…
1.问题由来 近期发现堡垒机环境有如下问题,systemd占用大量cpu: 原文链接:https://www.cnblogs.com/yaohong/p/16046670.html 2.问题定位 2.1.什么是systemd 咋们可以先从systemd这个进程入手分析这个问题:根据文档<systemd (简体中文)>文档,我们可知如下图信息:作用: systemd 会给每个用户生成一个 systemd 实例,用户可以在这个实例下管理服务,启动.停止.启用以及禁用他们自己的单元. 工作原理: &…
性能调优步骤 明确问题->收集数据->分析数据->细化.定位问题->优化 环境: db2 问题:%usr CPU高,大约99%,db2sysc进程使用的最多 收集数据 ---系统层面 vmstat > vmstat. ps -elf > pself. ps aux > psaux. iostat > iostat.1 ---数据库层面 db2 connect to <db_name> db2pd -eve > db2pd_eve.out d…
目录 目录 1 1. 现象描述 1 2. 问题定位 2 3. 解决方案 5 4. 相关代码 5 1. 现象描述 外界连接9090端口均超时,但telnet端口总是成功.使用top命令观察,发现单个线程的CPU最高达99.99%,但并不总是99.9%,而是在波动.当迁走往该机器的流量后,能够访问成功,但仍然有超时,读超时比写超时多: # ./hbase_stress --hbase=110.13.136.207:9090 --test=2 --timeout=10 [2016-11-27 10:1…
今天朋友问我一个Linux程序CPU占用涨停了,该如何分析, CPU占用过高,模拟CPU占用过高的情况 先上一段代码: #include <iostream> #include <thread> #include <vector> int main(int argc, char **argv) { std::vector<std::thread> test_threads; ; i < ; i++){ test_threads.push_back(st…
一:背景 1.讲故事 前些天有位朋友微信找到我,说他的程序出现了CPU阶段性爆高,过了一会就下去了,咨询下这个爆高阶段程序内部到底发生了什么? 画个图大概是下面这样,你懂的. 按经验来说,这种情况一般是程序在做 CPU 密集型运算,所以让朋友在 CPU 高的时候间隔 5~10s 抓两个 dump 下来,然后就是用 WinDbg 分析. 二:WinDbg 分析 1. CPU 真的爆高吗 耳听为虚,眼见为实,我们用 !tp 观察下当前的CPU情况. 0:000> !tp CPU utilizatio…
Jemeter 压测过程,发现mongodb的CPU均达到100%,需要查看mongodb的执行情况,使用mongo自带的profiling功能. profiling将请求的执行情况记录在DB下的 system.profile 集合里,profiling 有3种模式: 点击查看官方文档 在mongodb的客户端执行: >db.getProfilingLevel() 根据返回值 0 代表不开启 1 代表记录慢指令(默认100ms) 2 代表记录所有指令 更改此值,使其生效. db.setProfi…
1.首先通过top命令查询当前进程所占cpu的一个比重…
今天突然发现线上一台oracle 数据库 servercpu 跑的非常高.感觉不是非常正常,细致看了下.发现是smon 进程吃掉了一个cpu. 那么这个smon 进程究竟在倒腾啥玩意 对smon 进程开启10046 跟下不就全明了了么 分析trace 文件就这么一个sql语句 ,这玩意在删smon_scn_time  delete from smon_scn_time where thread=0 and scn =  (select min(scn) from smon_scn_time wh…
1.mds.mds_stores.mdworker 关闭: sudo mdutil -a -i off 打开: sudo mdutil -a -i on…
针对服务器框架Engine,在工作线程中发现该线程占用CPU过高,分析之后发现问题出在死循环那里 void cServerBase::OnProcess() { printf("cServerBase OnProcess\n"); while(m_bRuning) { onMsg(); cTimerMgr::Inst().process_timer(); } } 在这个线程里面出现的死循环,所以导致CPU过高. 而在网络线程里面,因为有执行 int nEventNum = epoll_…
在此之前项目有发生过两次类似的状况,都得以解决,但最近又会发现偶尔CPU会跑满,虽然之前使用过WinDbg解决过两次问题但人的记忆是不可靠的,今天处理同样问题的时候还是遇到了一些障碍,这一次希望可以记录的更全面些. 上两次的博文链接:记一次w3wp占用CPU过高的解决过程(Dictionary和线程安全).EntityFramework中的线程安全,又是Dictionary. 首先请大家不要喷我,因为这一次还是关于Dictionary的一些低级错误,我自己看到都无语了... 抓取Dump 使用任…
继上一次查应用的CPU飙高问题(http://www.cnblogs.com/hzmark/p/JVM_CPU.html)过去10天了.上次只是定位到了是一个第三方包占用了大量的CPU使用,但没有细致的去查第三方包为什么占用了这么高的CPU,并且内存为什么如此诡异.总的来说上一次排查带来的收获是熟悉了JVM的工具使用和大致定位到了问题. 在上次排查问题之后,应用出现异常的频率还是较高,终下定决心再查一次,而这次排查的重点落在内存方面.因为怀疑CPU偏高是因为内存的异常导致频繁的GC引起的. 首先…
yarn就先不介绍了,这次排坑经历还是有收获的,从日志到堆栈信息再到源码,很有意思,下面听我说 问题描述: 集群一台NodeManager的cpu负载飙高. 进程还在但是看日志已经不再向ResourceManager发送心跳,不断重复下文2的动作. 心跳停止一段时间后会重连上RM但是cpu仍然很高,再过一段时间心跳再停,一直循环. NodeManager的日志解析 1.NM的localizing过程 localizing:container开始从hdfs下载resource,hdfs文件的状态从…
感谢 感谢[一级码农] 的帮助,之前也读了大佬的好多文章,一直在学习中,也没有实际操作过. 这次的过程也是在大佬的指点下完成的. 现象描述 从周六上午开始,陆续收到服务器CPU高的报警短信,到下午已经累计三十多条报警了,看来确实得分析一下原因了. 打开云监控,与实际情况一致,CPU居高不下 通过进程,很快锁定是哪个应用,是一个car系统造成的 car系统的版本是.net 4.0 分析过程 通过以下命令,抓包,命令解释,当CPU超过50%时,持续三秒,抓两个包.进程ID是6100.进程ID在任务管…
背景 将log4j.xml的日志级别从error调整为info后,进行压测发现CPU占用很高达到了90%多(之前也就是50%,60%的样子). 问题排查 排查思路:  看进程中的线程到底执行的是什么,导致CPU占用较高. 1. 使用top命令查看到底是哪个应用占用的cpu比较高 左边的图是日志级别为info CPU较高的服务器, 右边为输出级别为error cpu正常的服务器. 2. 使用top -Hp pid 命令查看进程中的线程 可以看到左边运行中的线程比右边要多(实际上左边运行状态的线程常…
LZ开发的一个公司内部应用供查询HIVE数据使用.部署上线后总是会出现CPU偏高的情况,而且本地测试很难重现.之前出现几次都是通过直接重启后继续使用,因为是内部使用,重启一下也没有很大影响(当然,每次重启都是顺带改改BUG,添加一些监控,或者修改了一些参数). 今天再次发生占用CPU偏高的情况(机器是16核的),跑了几天后出现占用到200-300CPU的情况,之后快速升高,占用到700-1000.随机对应用状态状态尽兴了检查. 首先看了GC情况,看是否在进行FGC. (在CPU刚开始飙高的时候F…
原文地址: http://www.cnblogs.com/Lawson/archive/2011/01/23/1942692.html 很早看到windbg+sos方面的知识,一直没仔细学习,也许因为自己做的系统还不够复杂,也没线上真实环境查看的权限,一直没学习这方面的知识,最近几天仔细找了这方面的资料,自己也写了个可能造成高CPU高内存的测试web页面,发现确实不错,即使一个生手,也可以用工具连蒙带骗的猜出哪里出了问题,当然对一些命令和内部标示更熟悉了后,可以更好的找出问题所在,非常值得学习.…
一.High CPU试验 1.示例代码 static void Main(string[] args) { Console.Clear(); Console.WriteLine("到命令行下,切换到windbg目录,执行adplus -hang -pn highcpu.exe -o c:\\dumps"); Console.WriteLine("如果要停止,按Ctrl+C结束程序"); Console.WriteLine("================…
之前排除服务器内存暴增的问题,在此看到一篇类似的文章,做个类似的记录. 1.top基本使用 top 命令运行图: 第一行:基本信息 第二行:任务信息 第三行:CPU使用情况 第四行:物理内存使用情况 buff/cache: buffers 和 cache 都是内存中存放的数据,不同的是,buffers 存放的是准备写入磁盘的数据,而 cache 存放的是从磁盘中读取的数据 在Linux系统中,有一个守护进程(daemon)会定期把buffers中的数据写入的磁盘,也可以使用 sync 命令手动把…
因为这段时间一直在弄监控,但是工作还是在进行中 因为机器不多,所以今天早上巡检了一下,看到一台生产机器上的CPU飙高 top…
有哪些SQL语句会导致CPU过高? 1.编译和重编译 编译是 Sql Server 为指令生成执行计划的过程.Sql Server 要分析指令要做的事情,分析它所要访问的表格结构,也就是生成执行计划的过程.这个过程主要是在做各种计算,所以CPU 使用比较集中的地方. 执行计划生成后会被缓存在 内存中,以便重用.但是不是所有的都可以 被重用.在很多时候,由于数据量发生了变化,或者数据结构发生了变化,同样一句话执行,就要重编译. 2.排序(sort) 和 聚合计算(aggregation) 在查询的…
我们的服务器在使用操作系统的时候,用着用着系统就变慢了,打开“ 任务管理器 ”一看,才发现CPU使用率达到80%以上.这是怎么回事情呢?遇到病毒了吗?硬件有问题?还是系统设置有问题呢?在本文中将从硬件,系统进程,应用软件和病毒木马四个方面来介绍CPU资源使用率为什么会达到那么高,以帮助大家排除服务器CPU使用率高的种种疑惑. 一.硬件因素 以下分别从CPU温度,CPU超线程,硬件配置,硬件驱动和待机方面分析. 情况1. CPU温度过高如果CPU风扇散热不好,会导致CPU温度太高(CPU温度多少正…
w3wp占用CPU过高 在此之前项目有发生过两次类似的状况,都得以解决,但最近又会发现偶尔CPU会跑满,虽然之前使用过WinDbg解决过两次问题但人的记忆是不可靠的,今天处理同样问题的时候还是遇到了一些障碍,这一次希望可以记录的更全面些. 上两次的博文链接:记一次w3wp占用CPU过高的解决过程(Dictionary和线程安全).EntityFramework中的线程安全,又是Dictionary. 首先请大家不要喷我,因为这一次还是关于Dictionary的一些低级错误,我自己看到都无语了..…
源:http://daiwa.ninja/index.php/2015/07/18/storm-cpu-overload/ 2015-07-18AUTHORDAIWA STORM在线业务实践-集群空闲CPU飙高问题排查有2条评论 STORM在线业务实践-集群空闲CPU飙高问题排查 最近将公司的在线业务迁移到Storm集群上,上线后遇到低峰期CPU耗费严重的情况.在解决问题的过程中深入了解了storm的内部实现原理,并且解决了一个storm0.9-0.10版本一直存在的严重bug,目前代码已经合并…
本篇博客记录一次性能测试过程中,定位对CPU使用率高的瓶颈问题,主要定位SQL为准 一.用SQL命令定位1.首先用TOP命令监控系统资源,如果是AIX系统,就用topas,进入TOP命令的滚动刷新数据时,发现userCPU高达98%!! 保持top的状态下,按shift+p,可以将所有进程按CPU使用率高低排序,这样可以了解消耗CPU最多的进程是哪些 可以看到,当前userCPU使用率高达98%,且此时TPS不再随并发数上升了,可以认为已经达到性能瓶颈了,且是由CPU瓶颈造成的 2.排序完后,将…
一.内存过高 1.内存过高一般有两种情况:内存溢出和内存泄漏 (1)内存溢出:程序分配的内存超出物理机的内存大小,导致无法继续分配内存,出现OOM报错 (2)内存泄漏:不再使用的对象一直占据着内存不释放,导致这块内存浪费掉,久而久之,内存泄漏的对象堆积起来,也会导致物理机的内存被耗尽,出现OOM报错 2.内存过高的检测办法:通常我们的Java服务器部署在Linux机器上面,可以通过jvm自带的命令进行一些检测 (1)查看对象的数目和占用内存大小 ①参数为Java程序的进程号,将结果导出到指定目录…
在之前的常见的Java问题排查方法一文中,没有写cpu iowait时的排查方法,主要的原因是自己之前也没碰到过什么cpu iowait高的case,很不幸的是在最近一周连续碰到了两起cpu iowait的case,通过这两起case让自己学习到了很多系统层面的知识,也许这些知识对于熟悉系统的人来说没什么,不过对于写Java的同学我觉得还是值得分享下(由于Java基本不用于存储类型的场景,所以通常来说碰到iowait高的机会会比其他几类问题更低很多). 当出现iowait高时,最重要的是要先找出…
1.系统的CPU使用率,不仅包括进程用户态和内核态的运行,还包括中断处理,等待IO以及内核线程等等.所以,当你发现系统的CPU使用率很高的时候,不一定能找到相对应的高CPU使用率的进程 2.案例分析,排查定位不容易发现的高消耗CPU的进程 (1).案例准备工作:两台装有linux系统的虚拟机,一台用作web服务器,一台用作web服务器的客户端 (2).预先安装docker,sysstat,perf,ab等工具,ab装在客户端机器上,其他的安装在web服务器端 (3).在第一台机器(web服务器)…