Linux——排查性能相关命令

1、top

大写M : 对内存进行排序显示
大写P:对cpu进行排序显示
大写T:对运行时间进行排序显示
大写N:对PID进行排序显示
小写i: 直接过滤掉空闲进程
大写H:显示进程下的线程
-p   :指定进程
小写c  显示整个命令行而不只是显示命令名。

2、jmap

#dump出文件
jmap -dump:format=b,file=heap.bin [PID]
#查看JVM内存配比
jmap -heap [pid]
#统计活对象
jmap -histo:live [PID]

3、netstat
统计端口状态

netstat -nat |grep 8080 |awk '{print $6}'|sort|uniq -c

4、nginx access.log分析
分析access.log获得访问前10位的ip地址

awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10

查看nginx的启动用户

 ps aux | grep "nginx: worker process" | awk '{print $1}'

查看连接某服务端口最多的的IP地址

netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20

查看每个ip跟服务器建立的连接数

netstat -nat|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn

最后,JVM分析

NEW :未启动的。不会出现在Dump中。
RUNNABLE :运行中状态,当调用thread.start()后,线程变成为Runnable状态。只要得到CPU,就可以执行。可能里面还能看到locked字样,表明它获得了某把锁。
RUNNING:线程正在执行;
BLOCKED :受阻塞并等待监视器锁。如果进入同步方法或同步代码块,没有获取到锁,则会进入该状态。
WATING :无限期等待另一个线程执行特定操作。等待某个condition或monitor发生,一般停留在park(), wait(), sleep(),join() 等语句里。
TIMED_WATING :有时限的等待另一个线程的特定操作。和WAITING的区别是wait() 等语句加上了时间限制 wait(timeout)。
DEAD:线程执行完毕,或者抛出了未捕获的异常之后,会进入dead状态,表示该线程结束
其次,对于jstack日志,我们要着重关注如下关键信息
DEADLOCK:表示有死锁
Waiting on condition:等待某个资源或条件发生来唤醒自己。具体需要结合jstacktrace来分析,比如线程正在sleep,网络读写繁忙而等待
BLOCKED:阻塞

jstack统计线程数

jstack 13885 | grep 'java.lang.Thread.State' | wc -l

存在阻塞或死锁的线程

jstack 13885 |grep -E "RUNNING|BLOCKED"  

其他:

jstack 13885 |grep -E "WATING |TIMED_WATING"  
jstack 13885 |grep -E "DEADLOCK|DEAD"  

系统慢,特别关注

Blocked,Waiting on condition

cpu高

非常可能线程执行有死循环,特别关注Runable状态。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值