linux异常级别,linux性能异常定位之进程级别
【前言】
本文和大家分享:linux系统下常见得性能异常,怎样定位到进程级别。说简单点,就是:linux性能出问题了,我们需要确定哪些进程影响了linux的性能。
本文主要涉及的linux的常见的性能维度:cpu,内存,io,网络
【涉及工具】
top:综合,偏cpu,内存
dstat:综合、磁盘
iostat:磁盘io,全局
iotop:磁盘io,精确到进程,(类似工具还有pidstat)
iftop:网络、实时刷新(类似工具还有nload,ifstat)
nethogs:进程级别的流量
ss:网络、快、消耗资源低(替代netstat)
pidstat:综合的
free:额,内存。。。
【cpu】
cpu主要关注性能指标:
(1)cpu使用率:用户,系统等
(2)cpu累计使用时长
(3)中断,上下文切换等(使用不多)
就cpu性能指标的观察而言,其实有很多工具,这里主要介绍top和dstat
1、top
top各行结果我就不详细介绍了,是用起来也比较简单。对于排查cpu是用率过高,比较关键的指令是P和T。
输入了P(冒号P)之后:按照cpu排序
输入T(冒号T):根据时间、累计时间排序,可查看哪些进程消耗历史消耗多
这样我们就能找到哪个进程占用cpu过高了。
下例:就发现ntpd脚本占用的cpu时间是最多的,当前的ntpd占用cpu使用率也较大(其实只有1.3%)
另外:还可以输入以下便捷指令
1:多核
m:是否显示内存信息
M:根据内存排序
H:shift+h,打开线程模式
x:列的高亮(先要按b)
shift+改变排序的行
2、dstat命令
dstat也是一个比较综合的工具
这里用来找到cpu暂用率最高的参数如下
dstat -lcm --top-cpu
下图可以看到,ntpd(时间服务)和zabbix的agent消耗cpu多点(其实也不多,才0.x%)
3、pidstat
直接输入pidstat(或者pidstat -l,会把命令的绝对路径输出)就可以看到进程使用cpu相关数据
【内存】
一般我们对内存关注几个指标:
(1)是否使用了大量的交换空间:如果使用了大量的交换空间,说明有问题了(内存不够?还是说有进程异常?)
(2)每个进程消耗了多少内存空间:
对于内存的查看,最简单就是free,还有dstat和top
1、free
通过free -m 我们看到,swap没有使用,内存充足
2、dstat
查看哪个进程消耗了最多的内存
输入dstat lcmd -top-mem
看到,就puppet消耗了最多的内存59m(正常)
3、top
输入top之后,输入b,再输入x,再输入shift+’>’或者shif+’
【磁盘】
一般我们对磁盘关注几个指标:
(1)读写的量/秒:dstat和iostat(全局),iotop或者pidstat(进程级别)
(2)每次读写磁盘的延迟时间:iostat(全局)
dstat,iostat用于查看全局的io情况,要精确到进程用iotop或者pidstat
dstat:可以看到磁盘每秒的读、写取量(单位还整理过,所以一般我看磁盘的读写量都会用这个工具)
iostat就可以看到:磁盘的磁盘每秒的读、写取量并且还可以看到io的延迟效果(一般我看io的延迟会用这个工具)
1、dstat
dstat可以看到每秒读写多少B、K、M的数据
dstat其他参数和常用使用还有:
dstat -g -l -m -s --top-mem
dstat -c -y -l --proc-count --top-cpu
2、iostat
也可以看到类似的效果,而且更加丰富
svctm < await (同时等待的请求的等待时间被重复计算),
如果 svctm 比较接近 await,说明I/O 几乎没有等待时间;
如果 await 远大于 svctm,说明 I/O 队列太长
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒):会将await也计算在内
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
3、iotop
通过iotop直接看得到io占用最高的进程,直接输入iotop命令,效果如下
4、pidstat
通过pidstat -d也可以看到读写磁盘数据多的进程,pidstat -d效果如下:
【网络】
一般网络主要关注性能指标:
(1)出入的流量
(2)连接状态:各个状态如established,timewait等
(3)本地监听,消耗的端口数量等
接下来介绍三个工具
1、ss
ss命令用于功能和netstat差不多,用于查看网络连接状态。
ss:消耗资源低;和netstat相比,比较快的原因在于:“ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢”(zz)
以下的实例说明当前已经建立了连接33个,timewaite有866个(可以考虑优化了)
以下的示例说明本地打开了哪些端口
2、iftop
通过iftop可以看到本机和哪些ip域名之间的流量很大:
直接输入top既可以看到:
iftop命令相关参数介绍如下:
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
3、nethogs
nethogs能直接就看到进程级别的流量
直接输入nethogs em2(网卡)就可以看到本地的哪些端口和对端的哪些端口之间的流量,从而就知道哪些进程消耗了很多网络流量了
【小结】
以上工具,从cpu、内存、磁盘,网络维度,能查到各个进程消耗相关性能(资源)的具体情况,对系统性能出异常时,定位至进程级别是十分有帮助了。
现在就进入下一个问题,当系统性能异常定位至进程时,怎样进一步跟进下去?甚至深入至代码级别(如果是代码有异常,而非硬件异常)?
nb的运维攻城狮是不会就此打住的,需要进一步去深入调查的^_^
本文出自 “H2O's运维&开发路” 博客,转载请与作者联系!
原文:http://h2ofly.blog.51cto.com/6834926/1621481
linux异常级别,linux性能异常定位之进程级别相关推荐
- linux下怎么查看程序异常,linux程序莫名异常怎么查
内存异常经常导致程序出现莫名其妙的错误,往往很难查证,本文介绍在linux下的各种常见内存异常的查证工具和方法. 1 访问空指针/未初始化指针/重复释放内存 对于像访问空指针.未初始化指针(非法地址) ...
- linux硬件控制流,Linux系统学习笔记:异常控制流
程序计数器中指令的地址的过渡称为控制转移,控制转移的序列称为处理器的控制流.最简单的是平滑流.跳转.调用和返回等指令会造成平滑流的突变,来对内部的程序状态中的变化做出反应.系统也需要能够对系统状态的变 ...
- arm linux 中断 分析,armlinux中断异常的处理分析.pdf
基于 ARM Linux 中断.异常的处理分析 本文是基于ARM S3C2410X 系统的Linux 2.6 中断.异常和系统调用的处理分析. 主要有以下几个部分: 1. ARM 的硬件中断机制 2. ...
- Linux中的报错命令,Linux学习教程-Linux下命令的一些异常情况
导读 命令不全:在命令没有输入完 (引号或括号没有配对),就不小心按下了Enter键,终端会提示出一个>代表命令不完整,这是可以继续输入,也可以ctrl+c终止输入,重新再来.(下面sed命令使 ...
- linux关闭的时候出现异常: java.net.ConnectException: 拒绝连接 (Connection refused)
linux关闭的时候出现异常: java.net.ConnectException: 拒绝连接 (Connection refused) 参考文章: (1)linux关闭的时候出现异常: java.n ...
- OK6410A 开发板 (八) 63 linux-5.11 OK6410A linux内核空间常见的异常情景及分析 kernel exception
异常情景的level1 异常情景的level1 是最底层 show 当前状况的 api 其他具体的异常情景会根据 自身情景 调用 这些api oops打印Unable to ... 到 ---[ en ...
- Unix/Linux 磁盘 I/O 性能监控命令
2019独角兽企业重金招聘Python工程师标准>>> 怎样才能快速的定位到并发高是由于磁盘io开销大呢?可以通过三种方式: Top可以看到的cpu信息有: Tasks: 29 to ...
- Linux服务器的那些性能参数指标 Top命令技巧
一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候, ...
- linux power_评估Linux on POWER的性能
linux power 介绍 在现代机器上,应用程序性能评估可能是一项复杂的任务. 通用工具几乎无法处理所有性能变量. 每个工作负载所强调的是不同的计算机子系统. 测量和调整CPU绑定程序与调整IO绑 ...
最新文章
- Design Pattern - Singleton(C#)
- 如何删除第一张单页_如何用PowerBI导入网页数据
- jvm fastdebug
- [译] 正确实现 linkedPurchaseToken 以避免重复订阅
- mybatis注册映射文件
- 【路径规划】基于matlab改进的蚁群算法机器人栅格地图避障路径规划【含Matlab源码 905期】
- java冒泡排序算法代码降序_Java排序算法总结之冒泡排序
- Intel600P三星sm951pm961nvme等固态硬盘安装WIN7教程
- NotifyIcon控件的使用
- 详解ResNet残差网络
- 等保测评所需postgresql数据库命令以及内容解析
- SAP BW顾问如何保持市场竞争力?【转自WKingChen的博客】
- HTML+JS+CSS实现幻灯片效果(附代码)
- 【scratch高阶案例教学】scratch黄金矿工 scratch创意编程 少儿编程 手把手教小朋友们从零制作黄金矿工游戏
- 【夏令营保研经验】北理计算机,北航计算机夏令营,中科院霸面保研经验(2019.7)
- 天下大事,必作于细。
- sql查询时添加一列为固定值
- 项目管理修炼之道之把握项目的节奏
- 服务器定时执行js脚本
- STM32——不同的按键对应实现不同功能的灯闪烁