- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java故障排查_Java线上故障排查必备指南(完整版)(1)
线上故障主要会包括 CPU、磁盘、内存以及⽹络问题,⽽⼤多数故障可能会包含不⽌⼀个层⾯的问题,所以进⾏排查时候尽量四个⽅⾯依
次排查⼀遍。同时例如 jstack、jmap 等⼯具也是不囿于⼀个⽅⾯的问题的,基本上出问题就是 df、free、top 三连,然后依次 jstack、
jmap 伺候,具体问题具体分析即可。
CPU⼀般来讲我们⾸先会排查 CPU ⽅⾯的问题。CPU 异常往往还是⽐较好定位的。原因包括业务逻辑问题(死循环)、频繁 gc 以及上下⽂
切换过多。⽽最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使⽤ jstack 来分析对应的堆栈情况。使⽤ jstack 分析 CPU 问题我们
先⽤ ps 命令找到对应进程的 pid(如果你有好⼏个⽬标进程,可以先⽤ top 看⼀下哪个占⽤⽐较⾼)。
接着⽤top -H -p pid来找到 CPU 使⽤率⽐较⾼的⼀些线程
然后将占⽤最⾼的 pid 转换为 16 进制printf %x\n pid得到 nid
接着直接在 jstack 中找到相应的堆栈信息jstack pid |grep nid -C5 –color
可以看到我们已经找到了 nid 为 0x42 的堆栈信息,接着只要仔细分析⼀番即可。当然更常见的是我们对整个 jstack ⽂件进⾏分析,通常
我们会⽐较关注 WAITING 和 TIMED_WAITING 的部分,BLOCKED 就不⽤说了。我们可以使⽤命令cat jstack.log | grep
java.lang.Thread.State | sort -nr | uniq -c来对 jstack 的状态有⼀个整体的把握,如果 WAITING 之类的特别多,那么多半是有问题
啦。
频繁 gc当然我们还是会使⽤ jstack 来分析问题,但有时候我们可以先确定下 gc 是不是太频繁,使⽤jstat -gc pid 1000命令来对 gc 分
代变化情况进⾏观察,1000 表⽰采样间隔(ms),S0C/S1C、S0U/S1U、EC/EU、OC/OU、MC/MU 分别代表两个 Survivor 区、
Eden 区、⽼年代、元数据区的容量和使⽤量。YGC/YGT、FGC/FGCT、GCT 则代表 YoungGc、FullGc 的耗时和次数以及总耗时。如
果看到 gc ⽐较频繁,再针对 gc ⽅⾯做进⼀步分析,具体可以参考⼀下 gc 章节的描述。
上下⽂切换针对频繁上下⽂问题,我们可以使⽤vmstat命令来进⾏查看
cs(context switch)⼀列则代表了上下⽂切换的次数。
如果我们希望对特定的 pid 进⾏监控那么可以使⽤ pidstat -w pid命令,cswch 和 nvcswch 表⽰⾃愿及⾮⾃愿切换。
磁盘
磁盘问题和 CPU ⼀样是属于⽐较基础的。⾸先是磁盘空间⽅⾯,我们直接使⽤df -hl来查看⽂件系统状态
更多时候,磁盘问题还是性能上的问题。我们可以通过 iostatiostat -d -k -x来进⾏分析
最后⼀列%util可以看到每块磁盘写⼊的程度,⽽rrqpm/s以及wrqm/s分别表⽰读写速度,⼀般就能帮助定位到具体哪块磁盘出现问题
了。
另外我们还需要知道是哪个进程在进⾏读写,⼀般来说开发⾃⼰⼼⾥有数,或者⽤ iotop 命令来进⾏定位⽂件读写的来源。
不过这边拿到的是 tid,我们要转换成 pid,可以通过 readlink 来找到 pidreadlink -f /proc/*/task/tid/../..。
找到 pid 之后就可以看这个进程具体的读写情况cat /proc/pid/io
我们还可以通过 lsof 命令来确定具体的⽂件读写情况lsof -p pid
内存
内存问题排查起来相对⽐ CPU ⿇烦⼀些,场景也⽐较多。主要包括 OOM、GC 问题和堆外内存。⼀般来讲,我们会先⽤free命令先来检
查⼀发内存的各种情况。
堆内内存
内存问题⼤多还都是堆内内存问题。表象上主要分为 OOM 和 Stack Overflo。
OOM
JMV 中的内存不⾜,OOM ⼤致可以分为以下⼏种:
Exception in thread main java.lang.OutOfMemoryError: unable to create new native thread
这个意思是没有⾜够的内存空间给线程分配 Java 栈,基本上还是线程池代码写的有问题,⽐如说忘记 shutdown,所以说应该⾸先从代码
层⾯来寻找问题,使⽤ jstack 或者 jmap。如果⼀切都正常,JVM ⽅⾯可
您可能关注的文档
- 7月浙江自考法语试题及答案解析.pdf
- 854计算机基础——备考建议+近年考点汇总.pdf
- a2大货车科目一考试技巧.pdf
- a3科目一考试技巧.pdf
- AC、热点开通说明书R2.pdf
- Adobe中国认证设计师证书分类.pdf
- AI人工智能专业词汇集.pdf
- Android开发面试题!2021Android大厂面试真题,附学习笔记+面试整理+进阶书籍.pdf
- C#List常用方法及Dictionary常用方法汇总.pdf
- C5驾考科目一模拟试题.pdf
- 2025年中国乙氧苯柳胺软膏市场调查研究报告.docx
- 2025年及未来5年电信设备项目市场数据调查、监测研究报告.docx
- 2025年中国产宝口服液市场调查研究报告.docx
- 2025年及未来5年远红外线热敷按摩仪之瑞颈灵项目市场数据分析可行性研究报告.docx
- 2025年中国2—氨基—4,6—二氯嘧啶市场调查研究报告.docx
- 2025年及未来5年双层风琴帘项目市场数据调查、监测研究报告.docx
- 2025年及未来5年多功能短路定位分析仪项目市场数据调查、监测研究报告.docx
- 2025年中国换芯型烟嘴市场调查研究报告.docx
- 2025年及未来5年印章防伪项目市场数据调查、监测研究报告.docx
- 2025年中国超小型冷冻修边机市场调查研究报告.docx
专注于中小学教案的个性定制:修改,审批等。本人已有2年教写相关工作经验,具有基本的教案定制,修改,审批等能力。可承接教案,读后感,检讨书,工作计划书等多方面的个性化服务。欢迎大家咨询^
原创力文档


文档评论(0)