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 ...
随机推荐
- C语言函数指针的使用
使用函数指针时一定要注意,因为c不会检查参数是否正确 区分返回指针的函数和函数指针 int *f4();返回一个整数指针 int (*f5)();返回整数的函数指针 int * (*f6)();返回整 ...
- windows知识
文章目录 系统 修改远程桌面的端口号 IE选项中reset web setting不可用(灰色)的解决办法 重装系统后,修改默认程序安装目录.我的文档.桌面 路径 Keep network addre ...
- Java中的包学习笔记
一.总结 1.引入包的概念的原因和包的作用比如有多个人开发一个大型程序,A定义了一个Math.java类,B也定义了一个Math.java类,它们放在不同目录,使用的时候也是用目录来区分,包实际上就是 ...
- Connecting Elixir Nodes with libcluster, locally and on Kubernetes
转自:https://www.poeticoding.com/connecting-elixir-nodes-with-libcluster-locally-and-on-kubernetes/ Tr ...
- 使用distillery&&docker 部署phoenix 应用
distillery 发布了2.0 了,有好多的新的功能 config prodiver 进行环境变量的配置 appup tansforms 插件系统,方便在release 构建的时候进行修改 m ...
- php创建桌面快捷方式实现方法
http://blog.csdn.net/fdipzone/article/details/50423613
- 我发起了一个 .Net 平台上的 产生式编程 开源项目 GP.Net
大家好 , 我发起了一个 .Net 平台上的 产生式编程 开源项目 GP.Net . 我们可以先看看一个网友的 代码生成器 项目 : <.Net 代码生成器 for PostgreSql> ...
- storage 事件监听
在公司的一次内部分享会上, 偶然知道了这个H5的新事件, 解决了我之前的一个bug. 事情是这样的, 第A网页上显示的数量的总和, 点击去是B页面, 可以进行管理, 增加或者删除, 当用户做了增删操作 ...
- ElasticSearch(七)管理ES
发现,故障修复以及恢复 在发现节点,主要是使用ES的zen模块来进行发现,发现的目的就是加入集群,zen的发现有两种模式分别是单播和组播,单播是指配置好了要发现的节点IP,组播则是指不配置具体IP,向 ...
- pandas读取MySql/SqlServer数据 (转)
在 Anacondas环境中,conda install pymssql ,一直报包冲突,所以采用先在 https://www.lfd.uci.edu/~gohlke/pythonlibs/#nump ...