最近遇到很一个很棘手的多线程问题,跟踪了几天终于解决了,在此记录跟踪过程的常用命令,后期有空再做具体的事件总结。软件的开发一定要有监控,一定要有监控,一定要有监控,重要的事情说三遍。没有监控的软件就是放荡不羁的流浪汉,无人看管,不好排查问题,不能及时响应,不能可控。

  运行操作

    #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性能、多线程排查常用命令的更多相关文章

  1. jvm性能调优常用命令

    说明和名词解释: ①  只有进行的运行用户才可以调用命令查看相关信息 ②  [pid] 为需要查看的进程的端口号 ③  [file] 为需要导出到的文件的具体地址 ④ [tid] 进程中线程的id 1 ...

  2. Tomcat性能优化及常用命令整理

    1汤姆猫性能优化 1.1连接参数 1.1.1默认连接配置 默认连接器采用阻塞式 IO,默认最大线程数为200,配置如下: <Connector port="8080" pro ...

  3. JVM性能调优监控命令jps、jinfo、jstat、jmap+jhat、jstack使用详解

    JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jinfo.jstat.jmap+jhat.jstack等小巧的工具,本博客希望能起抛砖 ...

  4. JVM性能监控与故障处理命令汇总(jps、jstat、jinfo、jmap、jhat、jstack)

    给一个系统定位问题的时候,知识.经验是关键基础,数据是依据,工具才是运用知识处理数据的手段 使用适当的虚拟机监控和分析的工具可以加快我们分析数据.定位解决问题的速度,本文主要介绍了几款服 务器上常用的 ...

  5. Jvm性能监控和常用工具

    JDK常用命令行工具   Jps : jps [options] [hostid]  , -q 只显示jvmid, -m 传递给主类main的参数,-l 类全名,-v jvm启动参数 jstat : ...

  6. Linux服务器以及系统性能排查常用命令

    一.在Linux系统中排查CPU故障的方法和技巧 1.top命令 Linux内部命令,可以查看实时的CPU的使用情况,也可以查看CPU最近一段时间CPU的使用情况 Linux下常用的性能分析工具,能够 ...

  7. JVM性能监控与故障处理命令行工具

    JDK命令行工具 Sun公司作为”礼物“赠送给JDK使用者的工具: 这些命令行工具大多是jdk/lib/tools.jar类库的一层薄包装,主要功能代码是在tools类库(不属于java的标准API) ...

  8. web故障排查常用命令

    整理总结了一些常用分析网站的命令方便大家快速定位故障所在排除故障,最小化的减少故障给业务带来的影响. 端口连接类 1.查看TCP连接状态 netstat -nat |awk '{print $6}'| ...

  9. linux上性能调优常用命令及简介

    1.综合命令:nmon.top:topas(aix) d :磁盘相关 c:cpu相关 m:内存相关 2.磁盘 2.1 测试顺序写性能dd if=/dev/zero of=/cdr/test.data ...

随机推荐

  1. <------------------字符流--------------------->

    FileWriter 字符输出流: 方法: 写入:write 刷新:flush public static void main(String[] args) throws IOException { ...

  2. Write your own Terraform provider: Part 1

    转自:https://container-solutions.com/write-terraform-provider-part-1/ This is the first part of a seri ...

  3. SVN提交强制输入日志信息

    在团队开发时,因一些团队成员提交代码时没有写提交说明的习惯,为了规范版本管理,增强大家的团队意识,上网找到了强制录入提交日志的方法.方法如下: 一.编写bat文件,命名为pre-commit.bat, ...

  4. oracle-pl/sql之一

    http://www.cnblogs.com/huyong/archive/2011/05/10/2041951.html#_Toc15837 SQL语言只是访问.操作数据库的语言,并不是一种具有流程 ...

  5. 深入详解美团点评CAT跨语言服务监控(六)消息分析器与报表(一)

    大众点评CAT微服务监控架构对于消息的具体处理,是由消息分析器完成的,消息分析器会轮训读取PeriodTask中队列的消息来处理,一共有12类消息分析器,处理后的结果就是生成各类报表. 消息分析器的构 ...

  6. 从后端接口下载文件的2种方式:get方式、post方式

    从后端接口下载文件的2种方式 一.get方式 直接使用: location.href='http://www.xxx.com/getFile?params1=xxx&params2=xxxx' ...

  7. 岭回归和Lasso回归以及norm1和norm2

    norm代表的是距离,两个向量的距离:下图代表的就是p-norm,其实是对向量里面元素的一种运算: 最简单的距离计算(规范)是欧式距离(Euclidean distance),两点间距离是如下来算的, ...

  8. mysql主从复制--重置操作reset master, reset slave

    本文介绍reset master, reset slave的作用. reset master 在master上执行 mysql > RESET MASTER 作用包括: 删除binlog索引文件 ...

  9. Linux shell 将字符串分割成数组

    原文链接:http://1985wanggang.blog.163.com/blog/static/776383320121745626320/ a="one,two,three,four& ...

  10. onsubmit ajax return false 无效

    var flat=false; return flat; async:false, 是重点.   执行ajax时return false的function 与onsubmit()不是同一个函数,所以无 ...