Java问题的排查过程
1:客户业务增加,导致FGC频繁。当发现FGC的次数频繁很高,这说明了需要优化JVM来减少FGC的次数,而由于代码问题导致的这种问题需要定位到代码中
2:个人代码导致的服务告警,排查过程:
第一步:用Top来查看CPU的使用率:
第二步:找出cup使用最高的pid 也就是第一列,然后jstack pid |fgrep pid(这里需要转16进制 printf “%xn”)
jstack的结果:
关于线程状态需要关注的有;
死锁 Deadlock ;等待资源,Waiting on condition;等待获取监视器,Waiting on monitor entry;阻塞,Blocked(重点关注)
如果是Blocked就是等待资源超时,这里由于没有现场的截图,只能描述一下,就是state 状态中是: java.lang.Thread.State: BLOCKED (on object monitor)
如果是Runnable的话:一般指该线程正在执行状态中,该线程占用了资源,正在处理某个请求,有可能正在传递SQL到数据库执行,有可能在对某个文件操作,有可能进行数据类型等转换。
如果是Wating on condition;
当你的堆栈信息出现这样的话你就可以基本发现是出现了死锁,还是阻塞,从而定位到代码中

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Java集合小记
Collection下集合 List 是一个 有序集合,维持的顺序是元素插入的顺序, 允许元素重复 1.ArrayList: 数组,查找元素很快,但删除元素和添加元素的效率相对较差, 默认大小是 10 个元素 2.LinkedList: 双向链表,删除、添加元素的效率很高,但查找元素的的效率较差 3.Vector: 线程安全的按顺序存放的数组,大部分public方法都由synchronized修饰 Set 不与许重复元素 1. HashSet: 实现是HashMap,按照key的哈希值存储,无序 2. TreeSet: 值有序,按照元素值大小排序,实现是NavigableMap(SortedMap子类/TreeMap) 3. SortedSet接口 : 有序,自己实现 comparator方法来排序 4. LinkedHashSet: 维持的顺序是元素插入的顺序 不属于collection,但与set超有关系的... ... Map 1. HashMap : 元素无序,允许一个null key, 默认大小是 16 个元素 2. TreeMap : 使用红黑树实现 3. S...
-
下一篇
JVM调优基础
1. JVM命令功能 jcmd help jhat: 读取内存堆转存 jmap: 提供转存和内存使用信息 jinfo:查看jvm的系统属性,也可以是设置系统属性,可用于脚本 jstack: 转存java进程信息,可用于脚本 jstat: 提供GC和类装载活动的信息,可用于脚本 jvisualvm: 可视化工具 jstat -J-Djstat.showUnspported=true -snap 5376 -- 获得监控信息 -XX:ReservedCodeCacheSize=N 标志可以设置代码缓存最大值-XX:InitialCodeCacheSize=N 代码缓存从初始大小开始分配 1.1 常用信息 1.错误信息:C: C帧, j: java帧 V: VM帧 v:VM生成的stub帧,J:其它帧,含java帧(编译) 2: TPS:每秒事物数,比如执行了dml操作,那么相应的tps会增加 RPS: 每秒请求数,并发数/平均响应时间 OPS:每秒操作次数 QPS是指每秒内查询次数,比如执行了select操作,相应的qps会增加。 PV 是指页面被浏览的次数,比如你打开一网页,那么这个网站...
相关文章
文章评论
共有0条评论来说两句吧...