类别 | 监控指令 | 描述 | 备注 |
内存 瓶颈 |
free | 查看内存使用 | |
cpu 瓶颈 |
top -Hp | 查看cpu使用最高的进程 | |
vmstat 3(间隔时间) 100(监控次数) | 查看swap in/out定位性能瓶颈 | 推荐使用 | |
ps -Lp 进程号 cu | 查看某个进程的cpu消耗排序 | ||
cat /proc/cpuinfo |grep ‘processor‘|wc -l |
查看cpu核数 | ||
top |
查看cpu总体消耗, 包括分项消耗 如user,system,idle, nice等消耗 |
top 然后shift+h: 显示java线程, 然后shift+M: 按照内存 使用进行排序; shift+P: 按照cpu时间排序; shift+T: 按照cpu累计 使用时间排序 多核cpu, 按“1”进入top视图 |
|
网络 瓶颈 |
cat /var/log/messages | 查看内核日志,查看是否丢包 | |
watch more /proc/net/dev |
用于定位丢包,错包情况, 以便看网络瓶颈 |
重点关注drop(包被丢弃) 和网络包传送的总量, 不要超过网络上限 |
|
netstat -i | 查看网络错误 | ||
ping ip | 测试网络性能 | ||
磁盘 瓶颈 |
iostat -x -k -d 1 | 磁盘的io读写情况 |
当看到I/O等待时间所 占CPU时间的比重 很高的时候, 首先要检查的就是机器 是否正在大量 使用交换空间, 同时关注iowait 占比cpu的消耗是否很大, 如果大说明磁盘 存在大的瓶颈, 同时关注await, 表示磁盘 的响应时间 以便小于5ms |
iostat -x | 查看系统各个磁盘的读写情况 |
重点关注await 和iowait的cpu占比 |
|
iotop | 查看哪个进程在大量读取IO |
一般先通过iostat 查看是否存在io瓶颈, 再定位哪个进程在 大量读取IO |
|
df -hl | 查看磁盘剩余空间 | ||
du -sh | 查看当前磁盘的使用空间 | ||
应用 瓶颈 |
ps -ef|grep java | 查看某个进程的id号 | |
ps -ef|grep java|wc -l | 查看特定进程的数量 | ||
netstat -tln|grep 8080 | 查看端口占用情况 | ||
lsof -i:8080 | 查看端口属于哪个进程 | ||
cat ***.log | grep ***Exception | wc -l |
统计日志文件中包含特定异常数量 | ||
jstack -l pid | 用于查看线程是否存在死锁 | ||
grep -v ‘HTTP/1.1″ 200′ | 取出非200响应码的URL | ||
ps -efL | grep [PID] | wc -l | 查看某个进程创建的线程数 | ||
find / type f -name "*.log"|xargs grep "ERROR" |
统计所有的log文件中, 包含Error字符的行 |
这个在排查问题 过程中比较有用 |
|
jstat -gc [pid] | 查看gc情况 | ||
jstat -gcnew [pid] |
查看young区的内存使用情况, 包括MTT(最大交互次数就 被交换到old区), TT是目前已经交换的次数 |
||
jstat -gcold | 查看old区的内存使用情况 | ||
jmap -J-d64 -dump:format=b, file=dump.bin PID |
dump出内存快照 |
-J-d64防止jmap导致 虚拟机crash(jdk6有bug) |
|
XX:+HeapDumpOnOutOfMemeryError |
在java启动时加入, 当出现内存溢出时, 存储内存快照 |
||
jmap -histo [pid] | 按照对象内存大小排序 | 注意会导致full gc | |
gcore [pid] | 导出完成的内存快照 |
通常和jmap -permstat /opt/**/java gcore.bin 一起使用,将core dump 转换成heap dump |
|
-XX:HeapDumpPath=/home/logs -Xloggc:/home/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps |
在Java启动参数中加入, 打印gc日志 |
||
-server -Xms4000m -Xmx4000m -Xmn1500m -Xss256k -XX:PermSize=340m -XX:MaxPermSize=340m -XX:+UseConcMarkSweepGC |
调整JVM堆大小 | xss是栈大小 |