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 ...
随机推荐
- centos7配置lamp成功安装过
linux+apache+mysql/mariadb+php 首先apache的安装: yum install httpd 接着mysql/mariadb的安装: yum install mysql ...
- lua-resty-qless-web UI 界面运行
lua-resty-qless-web 是 lua-resty-qless 的web 管理界面以及lua-resty-template 模版引擎开发的,里面实现了一个简单的 路由功能 备注: demo ...
- node ->rman to RAC (迁移)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/lmocm/article/details/34435699 *.audit_file_dest='/ ...
- 在WinForm中使用Web Services 来实现 软件自动升级( Auto Update ) (C#)
winform程序相对web程序而言,功能更强大,编程更方便,但软件更新却相当麻烦,要到客户端一台一台地升级,面对这个实际问题,在最近的一个小项目中,本人设计了一个通过软件实现自动升级技术方案,弥补了 ...
- Revit API 操作共享参数和项目参数
1.获取共享参数 private string GetSharInfo(Autodesk.Revit.ApplicationServices.Application revitApp) { Strin ...
- 外观模式face
5.1 模式优点 外观模式的主要优点如下: (1) 它对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易.通过引入外观模式,客户端代码将变得很简单,与之 ...
- django csrf使用教程,解决Forbidden (403)CSRF verification failed. Request aborted.
Django版本号:1.11.15 django中post请求报错:Forbidden (403)CSRF verification failed. Request aborted. HelpReas ...
- css加载字体跨域问题
刚才碰到一个css加载字体跨域问题,记录一下.站点的动态请求与静态文件请求是不同的域名的.站点的域名为 www.domain.com,而静态文件的域名为 st.domain.com.问题:页面中加载c ...
- 自然语言处理之:搭建基于HanLP的开发环境(转)
环境搭建比FNLP的简单,具体参考:https://github.com/hankcs/HanLP 各个版本的下载:https://github.com/hankcs/HanLP/releases 完 ...
- max_result_window
PUT http://192.168.1.12:9200/_settings { "index": { "max_result_window": "1 ...