文档章节

Linux性能检查命令总结

Hosee
 Hosee
发布于 2017/05/22 21:18
字数 1314
阅读 732
收藏 11

如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?

类别 监控命令 描述 备注
内存瓶颈 free 查看内存使用  
  vmstat 3(间隔时间) 100(监控次数) 查看swap in/out详细定位是否存在性能瓶颈 推荐使用
  sar -r 3 和free命令类似,查看内存的使用情况,但是不包含swap的情况  
cpu瓶颈 top -H 按照cpu消耗高低进行排序  
  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视图

   
  sar -u 3(间隔时间) 查看cpu总体消耗占比  
  sar -q 查看cpu load  
  top -b -n 1 | awk '{if (NR<=7)print;else if($8=="D"){print;count++}}END{print "Total status D:"count}' 计算在cpu load里面的uninterruptedsleep的任务数量 uninterruptedsleep的任务会被计入cpu load,如磁盘堵塞
网络瓶颈 cat /var/log/messages 查看内核日志,查看是否丢包  
  watch more /proc/net/dev 用于定位丢包,错包情况,以便看网络瓶颈 重点关注drop(包被丢弃)和网络包传送的总量,不要超过网络上限
  sar -n SOCK 查看网络流量  
  netstat -na|grep ESTABLISHED|wc -l  查看tcp连接成功状态的数量 此命令特别消耗cpu,不适合进行长时间监控数据收集
  netstat -na|awk'{print $6}'|sort |uniq -c |sort -nr 看tcp各个状态数量  
  netstat -i 查看网络错误  
  ss state ESTABLISHED| wc -l 更高效地统计tcp连接状态为ESTABLISHED的数量  
  cat /proc/net/snmp 查看和分析240秒内网络包量,流量,错包,丢包 用于计算重传率tcpetr=RetransSegs/OutSegs
  ping ip 测试网络性能  
  traceroute ip 查看路由经过的地址 常用于定位网络在各个路由区段的耗时
  dig 域名 查看域名解析地址  
  dmesg 查看系统内核日志  
磁盘瓶颈 iostat -x -k -d 1 详细列出磁盘的读写情况 当看到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 httpd| wc -l 查看特定进程的数量  
  cat ***.log | grep ***Exception | wc -l 统计日志文件中包含特定异常数量  
  jstack -l pid 用于查看线程是否存在死锁  
  awk'{print $8}' 2017-05-22-access_log|egrep '301|302'| wc -l 统计log中301、302状态码的行数,$8表示第八列是状态码,可以根据实际情况更改 常用于应用故障定位
  grep 'wholesaleProductDetailNew' cookie_log | awk '{if($10=="200")}'print}' | awk 'print $12' | more 打印包含特定数据的12列数据  
  grep "2017:05:22" cookielog | awk '($12>0.3){print $12 "--" $8}' | sort > 目录地址 对apache或者nginx访问log进行响应时间排序,$12表示cookie log中的12列表示响应时间 用于排查是否是由于是某些访问超长造成整体的RT变长
  grep -v 'HTTP/1.1" 200' 取出非200响应码的URL  
  pgm -A -f 应用集群名称 "grep "'301 ' log文件地址 | wc -l 查看整个集群的log中301状态码的数量  
  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是栈大小
       


 

 

© 著作权归作者所有

Hosee
粉丝 593
博文 135
码字总数 209956
作品 0
杭州
程序员
私信 提问
[转载] 磁盘硬件问题(坏块)检测

标签 PostgreSQL , Linux , Windows , SSD , smartctl , smartmontools , badblocks , hdparm , HD Tune 背景 Linux下面可以使用smartctl , badblocks检查是否有坏块。 Win下面可以使用HD Tu......

德哥
2018/04/18
0
0
Linux性能检测常用的10个基本命令

本文的内容主要来自对Netflix的一篇技术博客( Linux Performance Analysis in 60,000 Milliseconds (https://medium.com/netflix-techblog/linux-performance-analysis-in-60-000-millisec......

技术小能手
2018/09/17
0
0
新年开篇——开启大数据之路(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请附原文链接! https://blog.csdn.net/simonforfuture/article/details/85681508 文章目录 前言 总结 前言 离博主的上一篇文章已...

simon曦
01/03
0
0
超实用的8个Linux命令行性能监测工具

摘要:本文总结了8个非常实用的Linux命令行性能监测工具,这些命令支持所有的Linux系统,不仅可以用于监控系统,还可以发现导致性能问题的原因所在。 对每个系统/网络管理员来说,每天监测L...

Neo_
2012/09/25
0
2
Linux系统下常见性能分析工具的使用

在前面的文章中,我简单介绍了影响linux性能的几个方面以及如何解决这些方面的问题,但是如何才能从系统上发现是某个方面或某几个方面出现问题了呢,这就需要使用linux系统提供的几个常用性能...

李长春
2011/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue预渲染

prerender-spa-plugin 安装prerender-spa-plugin (插件使用见npm官网)[https://www.npmjs.com/package/prerender-spa-plugin] npm install prerender-spa-plugin --save-dev 配置prerender-s......

莫西摩西
28分钟前
0
0
Command模式

https://www.cnblogs.com/devinzhang/archive/2012/01/06/2315235.html

南桥北木
今天
1
0
由于PostgreSQL9.x二进制输出格式默认值改变导致的读取图片错误

今天从社区邮件看到一个这样的问题,感觉很有意思,在这分享给大家~具体如下: 问题现象: 作者有一个很老的Java应用,当时后端采用的PostgreSQL数据库版本为8.x,该系统除了正常的数据增删...

闻术苑
今天
2
0
导入sql时出现Invalid default value for 'create_time'报错处理方法

当运行SQL会出现:[Err] 1067 - Invalid default value for 'create_time',是因为Mysql版本不同,如果版本不 < 5.6请去的话报错的处理方法如下: 方法 :alter table table_name modify cre......

writeademo
今天
1
0
对ssm(spring,springmvc,mybatis)的了解总结

ssm框架现在是java web开发的三个主流框架 ,其实严格来算只算是两个框架,因为springmvc属于spring框架 ,是spring的一个mvc子框架 那么我们下面就来了解一下三大框架把 一 .Spring spring...

咸鱼-李y
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部