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 ...
随机推荐
- Android资源收集
1 android studio最新版本下载地址:https://developer.android.google.cn/studio/preview/?utm_source=android-stud ...
- MySQL--时间戳与时区问题
对于使用 timestamp 的场景,MySQL 在访问 timestamp 字段时会做时区转换,当 time_zone 设置为 system 时,MySQL 访问每一行的 timestamp 字段时 ...
- MySQL--时间戳属性1
============================================================================== DATETIME类型和TIMESTAMP类 ...
- BizDevOps — the true value proposition of workflow engines
转自:https://blog.bernd-ruecker.com/bizdevops-the-true-value-proposition-of-workflow-engines-f342509ba ...
- S老师 Shader 学习
Mesh Filter : 存储一个Mesh(网格,模型的网格,就是模型的由哪些三角面组成,组成一个什么样子的模型,三角面的一些顶点信息) Mesh Renderer:用来渲染一个模型的外观,就是样子 ...
- Electron-vue 新建Demo
vue init simulatedgreg/electron-vue Test(项目名)
- base64 base64urlsafe
1. base64 不算是加密算法,只能说是一种转码.使用64 个可见的字符来代替 ASCII码 中的256 个字符. 2. ASCII码占用一个字节,可以有0-255共256个取值.前128个为常用 ...
- laravel 一表關聯二表,二表關聯三表,通過一表controller拿三表數據
model 一表關聯二表 public function ordercode() { return $this->hasOne(\App\Models\OrderCode::class,'id' ...
- 自动化测试神器 之 python unittest 断言
自动化测试的最后一步需要判断结果是否正确,而正确设置断言可以帮助判断测试用例的执行结果,从而提高自动化测试的效率,python unittest 提供了一个比较完整的断言方法.unittest框架测 ...
- Maven install报MojoFailureException
[ERROR] 位置: 类 com.spark.test.JavaDirectKafkaWordCount [ERROR] /I:/TrueTimeControlOnSparkByJava/src/m ...