目录
进程相关
ps -ef|grep 'java' 或者 jps
查看java进程
ps -eo pid,lstart | grep pid
查看某个进程的启动时间,,java垃圾回收日志有的以系统启动时间为基准
ps -eo pid,lstart | grep 18289
查看某个进程的启动时间
netstat -anp | grep pid
查看进程占用端口
netstat -nap|grep "ESTABLISHED"|grep 8304
查看某端口已建立的连接信息
CPU监控
top
看进程内存占用,cpu消耗等
top -Hp pid
查看某个进程中的线程,按Shift+P按cpu耗时排序,再结合jstack -l pid|grep -C 5 '转16进制后的线程id' 分析 出耗时的java线程
printf "%x\n" pid
这个命令放在这里是上个命令有说到16进制,将10进制转16进制
vmstat 1
监控系统内存,cpu,io等状况
ps -eo pid,pcpu,args|grep java|grep -v 'grep'|sort -nrk 2|head -n 10
打印出最耗cpu的10个Java应用
cat /proc/cpuinfo
查看cpu信息
cat /proc/cpuinfo | grep "physical id" | sort | uniq
查看cpu个数
cat /proc/cpuinfo|grep 'cores'|sort|uniq
查看cpu的核数量
内存监控
cat /proc/meminfo
查看内存占用
free -m
内存使用情况
磁盘监控
iostat -x
IO监控
iotop -p pid
查看进程io消耗情况
blktrace
io分析工具,可定位到到底是读或写哪个(或哪些)文件造成了iowait高
df -h
查看磁盘已使用情况
du -sh directory_name
查看某个目录的大小,当磁盘容量不足时,可以用该命令列出储存占用比较大的目录(du -sh *)
列出比较大占用的目录
du -h --max--depth=1|sort -rh
网络监控
tcpdump -i eth0 port 7510
查看某个端口是否接受到网络数据
iftop
流量监控
sar -n DEV -u 1 10
查看网卡流量情况
sar -n DEV
网卡资源使用率
ethtool eth0
查看网卡带宽
curl ifconfig.me/all
查看机子公网ip
sysctl -a | grep tcp
linux 内核TCP参数查看
lspci | grep -i ether
查看网卡型号
nicstat 5
网络接口流量监控
JAVA性能分析命令
jmap -dump:format=b,file=test.bin pid
转储java堆内存数据,使用jdk自动工具jhat -J-mx1024m xx.bin,访问http://localhost:7000分析,或者使用用eclipse内存分析工具mat分析
jcmd 23681 VM.flags
查看某个java进程jvm启动参数
jmap -histo:live pid
查看类对象数量,占用内存大小汇总
jmap -heap pid
查看堆使用情况
jstat -gcutil pid
查看java新生代,老年代,以及对应的gc情况
jstat -gccapacity pid
查看虚拟机各个代的容量和相关统计信息,当-Xms == -Xmx的时候,OC +NGC 等于总堆大小
jstack -l pid
查看某个java进程的线程快照
分析java gc日志
可以将gc日志压缩成.zip文件上传到GC analysis 网站分析.
其他命令
mysqladmin -uroot -p variables |grep max_connections
在linux 上查看mysql 最大连接数
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
查看进程打开文件描述符情况
ulimit -n
限制程序能打开的最大文件描述符数量,可以用来限制创建socket数量
stat fileName
查看文件或者文件系统状态,,,包括文件访问,修改,文件属性改变时间等
find . -type d -name xxx
查找文件夹