linux系统下性能分析常用命令

1:top

2:free -m 、top -c 来进行查看当前内存的占用情况

技术分享

free 为内存的剩余状态,当前为3.8G的空闲内存,总的物理内存是8G,按键 shift+m 可以进行内存占用率的排序,%MEM 为进程内存占用信息

通过vmstat 1 10 来进行打印当前的系统负载信息,其中swap已经开始占用,说明设备的物理内存不足,开始使用虚拟内存

(http://baike.baidu.com/link?url=SDkfWQZxbHMXzHo6WJ3PVDalO0fuLZZcOtulbUhpyN-o9GwzYEBcYvqYRhmHEYeF5tBp4IozZMy9hLraBaepjfcxZQAG6Q_gTIDJ2_Cv2uu)

技术分享

3:df -h

4:分析线程:jstack  -l pid > dump.log

5:分析内存:jmap -dump:live,format=b,file=XXX pid

  cat stack | grep 'java.lang.Thread.State' | awk '{print $2$3$4$5}' | sort | uniq -c

6:gc情况:jstat -gc  pid  5000 20 (5000表示5s执行一次,该命令执行20次)

6:连接数:netstat -ano|grep 8443(端口)|wc -l、  netstat –nat | grep pid

7:线程数:top  -HP pid或者ps -Lf Pid | wc –l  或者:ps -eLo pid ,stat | grep 27989 | grep running | wc -l(其中ps -eLo pid ,stat可以找出所有线程,并打印其所在的进程号和线程当前的状态;两个grep命令分别筛选进程号和线程状态;wc统计个数。其中,ps -eLo pid ,stat | grep 27989)

cat dump_201812121238.log | grep 'java.lang.Thread.State' | awk '{print $2$3$4$5}' | sort | uniq -c (统计dump文件)

8:cup分析:sar -u 3 2 (<interval> [ <count>)

9:内存分析:sar -r 1 2(<interval> [ <count>)

11:磁盘I/O分析:sar -b 1 2  或者  sar -d  1 2

10:怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看

  怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看

  怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

 11:线程ID为十进制-->十六进制:printf "%x " xxx

12:查看端口被某个应用进程占用:lsof -i:端口号(需要使用root用户)或者netstat -tunlp|grep 端口号

原文地址:https://www.cnblogs.com/qiaoli0726/p/10071760.html