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 ...
随机推荐
- MySQL--InnoDB并发线程控制
InnoDB并发线程控制 MySQL InnoDB存储引擎提供innodb_thread_concurrency来控制进入InnoDB 存储引擎的线程数,以限制InnoDB存储引擎层的并发量. 当in ...
- OFIFG fault when using DCO in MSP430
The OFIFG flag always set in my recent MSP430 smoke device project. In this A sample hardware, there ...
- CloudStack学习-3
此次试验主要是CloudStack结合openvswitch 背景介绍 之所以引入openswitch,是因为如果按照之前的方式,一个网桥占用一个vlan,假如一个zone有20个vlan,那么岂不是 ...
- re正则匹配使用
print(result.span()) #输入字符串的范围 如果在匹配语句中有括号,group(1)就是提取第一个括号的内容,以此类推. 扩展思考:如果要从文本中匹配出目标字符串可以使用括号加gro ...
- 关于svm
svm的研究一下,越研究越发现深入.下面谈一些我个人一些拙见. svm计算基础是逻辑回归(logistic regression),其实一切二元分类的鼻祖我觉得都是logistic regress. ...
- ElasticSearch story(二)
调优一个问题,碰到了一个坎:大家看一下下面两个字符串: 2018-10-16 18:01:34.000 abcdewfrwfe 2018-10-16 18:01:50.123 testAmily012 ...
- py-day1-3 python基本数据类型
数据的基本类型: 数字:
- Jmeter使用自定义编写代码
原文地址:http://blog.csdn.net/li_ok/article/details/1487685 我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如 ...
- Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(
application.class要放在根目录下,否则会发生以下错误
- iOS开发 SourceTree将develop合并到master分支的详细步骤