分析流程:
1.CPU
2.Memory
3.IO
4.Network
一、CPU问题
查看cpu几核,top命令下按1
关注点:
1.cpu占用率
如果占用过高(模拟死循环)
curl localhost:8080/nn-ssm-springboot-0.0.1-SNAPSHOT/jvm-cpu(模拟访问死循环1)
curl localhost:8080/nn-ssm-springboot-0.0.1-SNAPSHOT/jvm-cpu(模拟访问死循环2)
curl localhost:8080/nn-ssm-springboot-0.0.1-SNAPSHOT/jvm-cpu(模拟访问死循环3)
top命令会发现CPU突然接近占满
jstack 2626 >a.txt (jstack PID >a.txt)
此时在top里按shift+h切换top的视图,查看线程的nid
printf "%x \n" 2656 (printf "%x \n"+NID)
输出a60
这时vim a.txt
搜索a60 在vi视图里 :/a60 定位出问题的代码位置
此时很明显是com.nn.controller.MainController.cpu(MainController.java:71)除了问题,看代码发现是个死循环
即可定位到出问题的代码
二、Memory
查看memory的命令有很多,比如
free -g / free -m
top
vmstat 1
用free -g截图
其中buffers为读/cache为写
三、io
iostat 1 可以观察读写速度
iostat -dx 1 可以观察读写速度及%util的参数,io占用时间比,超过5%就需要注意
df -h 可以查看系统磁盘使用率,第一列是磁盘分区,最后一列是挂载目录,中间还有分区使用率等。
df -h /usr 可以查看某个文件夹占用的空间
四、Network
http://sourceforge.net/projects/nicstat/files/nicstat-1.92.tar.gz 获取安装包
tar -zxvf nicstat-1.92.tar.gz
。。。。。。。。。。。。。。未完
术语
吞吐量:对单位时间内完成的工作量的度量
吞吐量:对单位时间内完成的工作量的度量
平均响应时间越短,系统吞吐量越大;平均响应时间越长,系统吞吐量越
小;但是,系统吞吐量越大,未必平均响应时间越短;因为在某些情况(例
如,不增加任何硬件配置)吞吐量的增大,有时会把平均响应时间作为牺牲,
来换取一段时间处理更多的请求
tps: Transactions per Second
qps: Queries per Second