性能定位常用命令整理

统计每秒钟Nginx收到多少请求:

cat access.log | grep 2019:20:19:50 | wc -l

解释:access.log为Nginx的日志,通过Nginx的配置文件nginx.conf查看日志文件名称和位置,2019:20:19:50 表示获取20点19分50秒接收的请求数,去掉秒则可以得到每分钟收到的请求数

查看GC情况:

jstat -gc PID 300 20

解释:PID是进程号,300表示300毫秒收集一次,20表示收集次数

jstack -l PID > a.txt

解释:将java堆栈输出到a.txt文件中

jcmd PID Thread.print >a.txt

解释:jcmd是JDK1.8以上版本才能用,和jstack的效果一样,也是将java堆栈文件打印到a.txt文件中

pstack PID >a.txt

解释:pstack命令表示将进程为PID的本地堆栈打印到a.txt文件中,文件中的LVMID 与top -Hp PID中的线程号是一致的

top -Hp PID

解释:打印进程号为PID的线程信息,可以得到最耗资源的线程号,执行printf %x PPID得到线程号的16进制,与java堆栈中的nid匹配

printf  %x PPID

解释:将十进制线程号转换成十六进制

 iostat -x 1

解释:iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。-x表示显示和io相关的扩展数据,检查awai列,如果该列在负载下持续超过10ms,说明磁盘过慢或磁盘过载

iostat -d -k 2

解释:-d表示显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;2表示,数据显示每隔2秒刷新一次。

netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

解释:查看linux系统中tcp连接的状态和连接数量统计,当结果中出现大量FINA_WAIT2时,表示服务器已经不堪重负

netstat -s|grep -i listen

解释:Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。-s 按各个协议进行统计。

posted @ 2019-08-12 13:57  寒冰宇若  阅读(228)  评论(0编辑  收藏  举报