JVM性能、多线程排查常用命令
最近遇到很一个很棘手的多线程问题,跟踪了几天终于解决了,在此记录跟踪过程的常用命令,后期有空再做具体的事件总结。软件的开发一定要有监控,一定要有监控,一定要有监控,重要的事情说三遍。没有监控的软件就是放荡不羁的流浪汉,无人看管,不好排查问题,不能及时响应,不能可控。
运行操作
#jar执行在前后加(nohup &) 或者添加参数(--daemon) 将程序设置为守护进程,在后台运行。
#后台挂起运行命令nohup(no hang up),0表示键盘输入,1表示屏幕输出,2表示错误输出。2>&1 是将标准出错重定向到标准输出
#nohup java -jar /usr/local/test.jar /usr/local/conf/conf.properties >> /usr/local/output.log 2>&1 &
#jobs -l #查看当前终端运行的后台进程
#fg %jobnum #将后台中的命令调至前台继续运行
#bg %jobnum #将一个在后台暂停的命令,变成在后台继续执行
#Ctrl + z #将一个正在前台执行的命令放到后台,并且处于暂停状态
查看进程
#top #查看各个进程的cpu使用情况,默认按cpu使用率排序
#top -p pid #查看该进程的资源使用情况
#top -H -p pid #查看该进程下各个线程的cpu使用情况
#top -Hp pid #查看该进程下各个线程的cpu使用情况
#ps -Lfp pid #查看该进程下各个线程的信息
#ps -aux|grep test.jar | grep -v grep #查看test.jar进程号
#ps -ef | grep test.jar | grep -v grep #查看test.jar进程号
#ps aux|head -1; ps aux | sort -k4nr | head -10 #查看排名前10的内存占用程序,不加head显示所有
#ps aux | less #显示所有运行中的进程,q退出
#ps -U root -u root -N #查看非root运行的进程
#ps -u admin #查看用户admin运行的进程
#jstack -l pid > stack.log #dump出该进程的所有线程信息及状态
#jinfo pid #查看该进程参数信息
#printf "%x\n" pid #将线程pid转换为十六进制 8f7
#jstack pid | grep 8f7 #查看pid进程里面的线程信息,线程Id为十六进制
#jstack -l pid > stack.log #dump出该进程的所有线程信息及状态
#jmap -histo pid | less #查看进程对象实例数量和空间占用.
#jmap 数据对象:[C is a char[], [S is a short[], [I is a int[], [B is a byte[], [I is a int[]
#jmap -dump:format=b,file=heapDump pid #生成堆栈转储文件
#pmap -d pid #查看进程占用的内存信息
#jstat -gc pid 1000 #每1s钟打印堆间使用情况
#jstat -gcutil pid 1000 10 #每1s查看10次gc频率
#lsof -p pid #查看该进程打开的文件
#cat /proc/pid/maps #查看pid线程内存分配
#ls -l /proc/$PID/exe #查看PID启动文件的路径
#ls -l /proc/$PID/cwd #查看PID执行目录的路径
#cat /proc/$PID/status #查看PID详细的内存占比
终止进程
#kill -9/15 pid #终止指定进程,-9 是强制终止进程,-15 是软结束进程
#pkill -9 pts/0 #踢出pts/0终端,pts/0是终端编号
#killall -9 test #终止test服务的所有进程
查看系统信息
#grep 'core id' /proc/cpuinfo | sort -u | wc -l #查看核心数量
#grep 'processor' /proc/cpuinfo | sort -u | wc -l #查看线程数
#top -b -n1 | mail -s 'Process snapshot' test@example.com #将进程快照发送到指定邮件
查看端口信息
#lsof -i:port #查看使用某端口的进程
#netstat -nap|grep port #查看指定端口的占用进程
#netstat -ln|grep port #查看指定端口的占用进程
#netstat -tunlp #查看所有端口的占用进程
#netstat -tunlp |grep port #查看指定端口的占用进程
查看终端信息
#w #查看所有终端信息
#who am i #查看当前终端信息
#who #查看当前终端信息
#date #查看当前时间信息
定时器设置
#设置定时任务或守护进程目录
#/var/spool/cron/root 和 /etc/crontab 和 /etc/rc.lcoal
#crontab -e #编辑定时器
#tail -f /var/log/cron #查看定时器启动日志,跟踪自启动程序
#cd /proc/pid #查看进程文件目录,/proc 用于存放进程文件
下载文件
#curl -fsSL url #下载文件,连接失败时不显示http错误,静音模式。
#wget -c -b -r -q url #断点后台执行递归无输出下载
附 - jmap输出中class name非自定义类的说明:
|
BaseType Character |
Type |
Interpretation |
|
B |
byte |
signed byte |
|
C |
char |
Unicode character |
|
D |
double |
double-precision floating-point value |
|
F |
float |
single-precision floating-point value |
|
I |
int |
integer |
|
J |
long |
long integer |
|
L; |
reference |
an instance of class |
|
S |
short |
signed short |
|
Z |
boolean |
true or false |
|
[ |
reference |
one array dimension,[I表示int[] |
备注:
作者:Shengming Zeng
博客:http://www.cnblogs.com/zengming/
本文是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。
<欢迎有不同想法或见解的同学一起探讨,共同进步>
JVM性能、多线程排查常用命令的更多相关文章
- jvm性能调优常用命令
说明和名词解释: ① 只有进行的运行用户才可以调用命令查看相关信息 ② [pid] 为需要查看的进程的端口号 ③ [file] 为需要导出到的文件的具体地址 ④ [tid] 进程中线程的id 1 ...
- Tomcat性能优化及常用命令整理
1汤姆猫性能优化 1.1连接参数 1.1.1默认连接配置 默认连接器采用阻塞式 IO,默认最大线程数为200,配置如下: <Connector port="8080" pro ...
- JVM性能调优监控命令jps、jinfo、jstat、jmap+jhat、jstack使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jinfo.jstat.jmap+jhat.jstack等小巧的工具,本博客希望能起抛砖 ...
- JVM性能监控与故障处理命令汇总(jps、jstat、jinfo、jmap、jhat、jstack)
给一个系统定位问题的时候,知识.经验是关键基础,数据是依据,工具才是运用知识处理数据的手段 使用适当的虚拟机监控和分析的工具可以加快我们分析数据.定位解决问题的速度,本文主要介绍了几款服 务器上常用的 ...
- Jvm性能监控和常用工具
JDK常用命令行工具 Jps : jps [options] [hostid] , -q 只显示jvmid, -m 传递给主类main的参数,-l 类全名,-v jvm启动参数 jstat : ...
- Linux服务器以及系统性能排查常用命令
一.在Linux系统中排查CPU故障的方法和技巧 1.top命令 Linux内部命令,可以查看实时的CPU的使用情况,也可以查看CPU最近一段时间CPU的使用情况 Linux下常用的性能分析工具,能够 ...
- JVM性能监控与故障处理命令行工具
JDK命令行工具 Sun公司作为”礼物“赠送给JDK使用者的工具: 这些命令行工具大多是jdk/lib/tools.jar类库的一层薄包装,主要功能代码是在tools类库(不属于java的标准API) ...
- web故障排查常用命令
整理总结了一些常用分析网站的命令方便大家快速定位故障所在排除故障,最小化的减少故障给业务带来的影响. 端口连接类 1.查看TCP连接状态 netstat -nat |awk '{print $6}'| ...
- linux上性能调优常用命令及简介
1.综合命令:nmon.top:topas(aix) d :磁盘相关 c:cpu相关 m:内存相关 2.磁盘 2.1 测试顺序写性能dd if=/dev/zero of=/cdr/test.data ...
随机推荐
- gcc的编译属性和选项
1.指定内存默认对其参数: __attribute__((packed)):按一字节对其__attribute__((aligned(n))):从此之后默认按n字节对其 例如: struct stu ...
- tailor+ skipper 实现micro-frontends 简单试用
tailor 在Mosaic 框架中扮演fragment 模版layout的处理,后端fragment可以用任何服务编写 tailor 主要就是进行layout的处理.tailor的是类似facebo ...
- List的Capacity,了解一下
之前在开发中只用到List的时候几乎就是拿过来就用,从来没有考虑过List的内存分配问题,试想一个有10万元素的List的在构造和添加元素时内存是如何变化的呢?在MSDN上关于List的Capacit ...
- 开发 FastAdmin 时见识到 php opcache 厉害
开发 FastAdmin 时见识到 php opcache 厉害 FastAdmin 的插件配置是写在 config.php 中的. 我在修改配置时发现加了空格,然后再重新打开配置页发现空格没有配置面 ...
- JMeter - Perfmon - ServerAgent
−Table of Contents 1 - Installation 2 - Usage and commands 2.1 - PerfMon Metrics Collector Listener ...
- Spring Cloud Stream
Spring Cloud Stream是Spring Cloud的组件之一,是一个为微服务应用构建消息驱动能力的框架. 1.导入引用 <dependency> <groupId> ...
- Hadoop数据分析实例:P2P借款人信用风险实时监控模型设计
Hadoop数据分析实例:P2P借款人信用风险实时监控模型设计 一提到hadoop相信熟悉IT领域或者经常关注互联网新闻的朋友都应该很熟悉了,当然,这种熟悉可能也只是听着名字耳熟,但并不知道它具体是什 ...
- 学习大数据基础框架hadoop需要什么基础
什么是大数据?进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的计量单位从MB(1 ...
- 记一次shell脚本编写及执行
首先cd进一个目录下 tauch tset.sh //新建一个test.sh文件 vim test.sh 编辑脚本 i 插入 #!/bin/bash data 按Esc键 再按ctrl+: wq + ...
- 虚拟机ubuntu新增挂载点进行磁盘扩展
参考: http://m.blog.csdn.net/blog/pcsxk/38501579 一.vmware下扩展原来的磁盘空间 这个比较直观 1.关机状态下,选择磁盘->实用工具->扩 ...