记一次生产环境线程阻塞的排查

1、使用top命令查找出消耗最多的进程id

$ top      #进程
$ top -H   #线程

2、查看进程中具体线程的资源消耗情况

$ strace -p [线程ID]

3、将线程ID转成16进制

$ printf  "%x\n" [线程ID]

4、查找具体阻塞的代码中的方法

$ jstack [进程ID] |grep [转好的16进制] -A 30

5、其他的一些常用命令

$ htop   #top的升级版,一般需要安装,centos7安装如下
$ yum install epel-release -y
$ yum install htop -y

6、jstat和jmap(此仅限于了解,待做详细总结)

jstat -class [进程ID]  #查看加载了多少类以及对应的信息
jstat -compiler [进程ID] #查看编译的数量, 成功和失败的数量和类型
jstat -gc [进程ID] #查看垃圾回收的统计信息

通过jstat可以对jvm堆的内存进行统计分析,而jmap可以获取到更加详细的内容
如:内存使用情况的汇总、对内存溢出的定位与分析。
jmap -heap [进程ID] #heap内存的使用情况
jmap -histo [进程ID] | more #查看内存中对象数量及大小
jmap -histo:live [进程ID] | more #查看内存中对象活跃数量及大小
jmap -dump:format=b,file=/tmp/dump.dat [进程ID] #将内存使用情况dump到文件中
jhat -port [端口] dump.dat #通过jhat对dump文件进行分析

原文地址:https://www.cnblogs.com/zhaihongchang/p/11333425.html

时间: 2024-10-11 11:00:14

记一次生产环境线程阻塞的排查的相关文章

java线程阻塞问题排查

我开发的worker,每隔几个月线上都会阻塞一次,一直都没查出问题.今天终于了了这个心结.把解决过程总结下和大家分享. 首先用jstack命令打出这个进程的全部线程堆栈.拿到线程dump文件之后,搜索自己的worker名字. "DefaultQuartzScheduler_Worker-10" prio=10 tid=0x00007f55cd54d800 nid=0x3e2e waiting for monitor entry [0x00007f51ab8f7000] java.lan

总结:利用asp.net core日志进行生产环境下的错误排查(asp.net core version 2.2,用IIS做服务器)

概述 调试asp.net core程序时,在输出窗口中,在输出来源选择“调试”或“xxx-ASP.NET Core Web服务器”时,可以看到类似“info:Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 285.6ms 200 text/css”这样的内容,这就是asp.net core的日志 如果出现了未捕获的异常,在输出窗口中可以看到出错信息,如:fail: Microsoft.AspNetCore.

记一次生产dubbo线程池耗尽的问题

问题: dubbo线程池耗尽,活跃线程数超过线程池最大线程数(dubbo默认线程池最大线程数为200) 登录服务提供者所在服务器 通过命令行连接dubbo: //telnet 服务提供者ip dubbo端口 telnet 20.1.16.26 20881 查看dubbo活跃线程: status -l 可以通过增加线程池最大线程数来解决: <dubbo:provider timeout="50000" threadpool="fixed" threads=&qu

记一次生产环境Nginx日志骤增的问题排查过程

摘要:众所周知,Nginx是目前最流行的Web Server之一,也广泛应用于负载均衡.反向代理等服务,但使用过程中可能因为对Nginx工作原理.变量含义理解错误,或是参数配置不当导致Nginx工作异常.本文介绍的就是福建开机广告Nginx的参数location处理静态文件配置不当引发的nginx日志骤增到14G的问题排期过程. 一.问题现象及系统介绍 现象:12月15日 21:02分,正在外面吃宵夜,手机收到监控平台的一条"服务器磁盘空间<20%"报警短信. 系统介绍:为了看此

记一次生产环境nginx图片上传不了的问题

在server节点目录下配置: client_max_body_size 8M; client_body_buffer_size 8M; 不过还是不能上传就执行下面这条命令: cd /var/lib/nginx/ chmod -R775 nginx/ 原文地址:https://www.cnblogs.com/java-le/p/11025421.html

生产环境OOM\死锁问题排查修复

OOM: 1.快速恢复业务:如果是集群中的一台机器故障,先隔离故障服务器:如果是多台,则根据Nginx转发策略,对该功能转发到单独的集群,与其他流量隔离,确保其他业务不受影响 2.收集内存溢出Dump文件:方式有两种: 1.设置JVM启动参数 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/jvmdump 设置之后,在每次发生内存溢出时,JVM会自动将堆转储,dump文件存放在-XX:HeapDumpPath指定的路径下 2.使用jma

生产环境 压测

spring boot下Servlet容器Tomcat和Undertow性能对比 - shog808的博客 - CSDN博客https://blog.csdn.net/shog808/article/details/79162871 基于Dubbo的压测调优实例 - 简书https://www.jianshu.com/p/69398d2bdf2e 记一次生产环境性能压测优化的经历 - Guo_guo - CSDN博客https://blog.csdn.net/sszgg2006/article/

生产环境遇到的hashMap非线程安全问题java.lang.thread.waiting

写在前面:工作有几年了,从入门到现在,遇到也解决了一些问题.(当然,框架级别的暂时还没有)一直以来,都是从博客园以及其他各大社区搜罗出来的各种fix方法.目前稍有闲暇时间,在看过大V沈剑的博文后,我也鼓起勇气来书写博客,记录工作中遇到和解决的问题(其中当然也包括我在博园获取的各种解决方法:能找到原博文的小弟一定会注明出处.)因为总觉得自己水平不够,怕写出来的文章误导了别人.以下是这周生产环境遇到的一个问题,写出来供大家参考. 现象 周五一大早,车子都没停稳(电动车),群里就开始在询问谁最近的代码

记一次IDEA 打包环境JDK版本和生产环境JDK版本不一致引发的血案

问题描述: 本地开发环境idea中能正常运行项目,而idea打war包到Linux服务器的Tomcat下却不能正常运行,报如下错误: 09-Aug-2019 08:56:06.878 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the