【No.1】监控Linux性能25个命令行工具
如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?通过以下命令或者工具可以快速定位
top
vmstat
lsof
tcpdump
netstat
htop
iotop
iostat
uptime
dmesg | tail
mpstat -P ALL 1
pidstat 1
free -m
sar -n DEV 1
sar -n TCP,ETCP 1
IPTraf
psacct 或者 acct
Monit
NetHogs
iftop
Monitorix
Arpwatch
Suricata
VnStat PHP
Nagios
Zabbix
1:Top-Linux进程监控
Linux下的Top命令是一个性能监控程序,许多系统管理员常常用它来监控Linux性能,在许多Linux或者类Unix操作系统里都有这个命令。Top命令用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。这条命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程PID、所使用命令以及其他。它还可以显示正在运行进程的内存和CPU占用多的情况。对系统管理员来说,top命令式是一个非常有用的,它可用于监控系统并在需要的时候采取正确的处理动作。让我们看看实际中的top命令
$ top
有关Top命令更多的例子,请阅读 :Linux下12个使用Top命令的例子
2:VmStat – 虚拟内存统计
Linux 的 VmStat 命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动 等的统计信息。缺省情况下, vmstat 命令在 Linux 系统下不可用,你需要安装一个包含了 vmstat 程序的 sysstat 软件包。命令格式的常见用法是:
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 159728 44988 6864 106772 1 1 2 2 18 30 0 0 99 0 0
更多的 vmstat 例子,请阅读 : 6 Linux 下的 Vmstat 命令实例
3:Lsof-列出打开的文件
在许多Linux或者类Unix系统里都有lsof命令,它常用于以列表的形式显示所有打开的文件和进程。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候。使用这条命令,你可以很容易地看到正在使用哪个文件。这条命令最常用的格式如下:
$ lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd unknown /proc/1/cwd (readlink: Permission denied)
init 1 root rtd unknown /proc/1/root (readlink: Permission denied)
init 1 root txt unknown /proc/1/exe (readlink: Permission denied)
init 1 root NOFD /proc/1/fd (opendir: Permission denied)
kthreadd 2 root cwd unknown /proc/2/cwd (readlink: Permission denied)
kthreadd 2 root rtd unknown /proc/2/root (readlink: Permission denied)
kthreadd 2 root txt unknown /proc/2/exe (readlink: Permission denied)
kthreadd 2 root NOFD /proc/2/fd (opendir: Permission denied)
ksoftirqd 3 root cwd unknown /proc/3/cwd (readlink: Permission denied)
ksoftirqd 3 root rtd unknown /proc/3/root (readlink: Permission denied)
ksoftirqd 3 root txt unknown /proc/3/exe (readlink: Permission denied)
ksoftirqd 3 root NOFD /proc/3/fd (opendir: Permission denied)
kworker/0 5 root cwd unknown /proc/5/cwd (readlink: Permission denied)
kworker/0 5 root rtd unknown /proc/5/root (readlink: Permission denied)
kworker/0 5 root txt unknown /proc/5/exe (readlink: Permission denied)
kworker/0 5 root NOFD /proc/5/fd (opendir: Permission denied)
rcu_sched 7 root cwd unknown /proc/7/cwd (readlink: Permission denied)
rcu_sched 7 root rtd unknown /proc/7/root (readlink: Permission denied)
有关lsof命令的用法和例子的更多信息,请参考: Linux下10个使用lsof命令的例子。
4:Tcpdump-网络包分析器
Tcpdump是最广泛使用的网络包分析器或者包监控程序之一,它用于捕捉或者过滤网络上指定接口上接收或者传输的TCP/IP包。它还有一个选项用于把捕捉到的包保存到文件里,以便以后进行分析。在几乎所有主要的Linux发布里,tcpdump都可以使用。
$tcpdump -i eth0tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
22:08:59.617628 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 2532133365:2532133481(116) ack 3561562349 win 9648
22:09:07.653466 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 116:232(116) ack 1 win 9648
22:08:59.617916 IP 115.113.134.3.static-mumbai.vsnl.net.in.28472 > tecmint.com.ssh: . ack 116 win 64347
要想获得更多有关tcpdump用法的信息,请参阅: Linux下12个使用Tcpdump命令的例子
5:Netstat-网络状态统计
Netstat是一个用于监控进出网络的包和网络接口统计的命令行工具。它是一个非常有用的工具,系统管理员可以用来监控网络性能,定位并解决网络相关问题。
$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:http-alt *:* LISTEN
tcp 0 0 *:http *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:51684 *:* LISTEN
tcp 0 0 localhost:9000 *:* LISTEN
tcp 0 0 *:56296 *:* LISTEN
tcp 0 0 *:mysql *:* LISTEN
tcp 0 0 *:6379 *:* LISTEN
tcp 0 0 192.168.22.21:mysql 192.168.22.1:62601 ESTABLISHED
tcp 0 0 192.168.22.21:mysql 192.168.22.1:62600 ESTABLISHED
tcp 0 0 10.0.2.15:ssh 10.0.2.2:65494 ESTABLISHED
tcp 0 0 10.0.2.15:ssh 10.0.2.2:59869 ESTABLISHED
tcp6 0 0 [::]:sunrpc [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 [::]:56477 [::]:* LISTEN
tcp6 0 0 [::]:6379 [::]:* LISTEN
tcp6 0 0 [::]:53963 [::]:* LISTEN
udp 0 0 *:857 *:*
udp 0 0 *:sunrpc *:*
udp 0 0 192.168.22.21:ntp *:*
udp 0 0 10.0.2.15:ntp *:*
udp 0 0 localhost:ntp *:*
udp 0 0 *:ntp *:*
udp 0 0 *:905 *:*
udp 0 0 localhost:907 *:*
udp 0 0 *:39063 *:*
udp 0 0 *:7660 *:*
udp 0 0 *:30719 *:*
udp 0 0 *:53277 *:*
有关Netstat更多的例子,请参阅: Linux下20个使用Netstat命令的例子
6:Htop – Linux进程监控
Htop 是一个非常高级的交互式的实时linux进程监控工具。 它和top命令十分相似,但是它具有更丰富的特性,例如用户可以友好地管理进程,快捷键,垂直和水平方式显示进程等等。 Htop是一个第三方工具,它不包含在linux系统中,你需要使用YUM包管理工具去安装它。 关于安装的更多信息,请阅读下文
$ sudo apt-get install htop
7:Iotop-监控Linux磁盘I/O
Iotop命令同样也非常类似于top命令和Htop程序,不过它具有监控并显示实时磁盘I/O和进程的统计功能。在查找具体进程和大量使用磁盘读写进程的时候,这个工具就非常有用。
$ sudo apt-get install iotop
$ sudo iotop
8:Iostat-输入/输出统计
Iostat是一个用于收集显示系统存储设备输入和输出状态统计的简单工具。这个工具常常用来追踪存储设备的性能问题,其中存储设备包括设备、本地磁盘,以及诸如使用NFS等的远端磁盘。
$ sudo apt-get install sysstat
$ iostat
Linux 3.13.0-75-generic (lnmp) 06/25/2016 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.16 0.00 0.32 0.04 0.00 99.48 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.41 4.46 4.68 3129872 3282398
dm-0 0.56 2.96 2.72 2077225 1911152
dm-1 0.86 1.47 1.96 1029392 1371232
8:uptime -- 查看机器的负载情况
这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。
命令的输出分别表示1分钟、5分钟、15分钟的平均负载情况。通过这三个数据,可以了解服务器负载是在趋于紧张还是区域缓解。如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。可以结合下文将会介绍的vmstat、mpstat等命令进一步排查。
$ uptime
14:19:46 up 8 days, 2:51, 2 users, load average: 0.01, 0.04, 0.05
9:dmesg -- 输出系统日志的最后10行
该命令会输出系统日志的最后10行。示例中的输出,可以看见一次内核的oom kill和一次TCP丢包。这些日志可以帮助排查性能问题。千万不要忘了这一步
$ dmesg | tail
[675516.616897] type=1702 audit(1466769981.090:9867): op=linkat ppid=19637 pid=19641 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=22 comm="git" exe="/usr/lib/git-core/git" res=0
[675516.616905] type=1302 audit(1466769981.090:9868): item=0 name="/home/www/yii/rantech/.git/objects/82/tmp_obj_QV2oZf" inode=141342550 dev=00:19 mode=0100444 ouid=501 ogid=20 rdev=00:00 nametype=NORMAL
[675516.628290] type=1702 audit(1466769981.102:9869): op=linkat ppid=19637 pid=19641 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=22 comm="git" exe="/usr/lib/git-core/git" res=0
[675516.628298] type=1302 audit(1466769981.102:9870): item=0 name="/home/www/yii/rantech/.git/objects/ac/tmp_obj_SewzDi" inode=141342551 dev=00:19 mode=0100444 ouid=501 ogid=20 rdev=00:00 nametype=NORMAL
[675516.644786] type=1702 audit(1466769981.118:9871): op=linkat ppid=19637 pid=19641 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=22 comm="git" exe="/usr/lib/git-core/git" res=0
[675516.644800] type=1302 audit(1466769981.118:9872): item=0 name="/home/www/yii/rantech/.git/objects/ba/tmp_obj_S00oeh" inode=141342552 dev=00:19 mode=0100444 ouid=501 ogid=20 rdev=00:00 nametype=NORMAL
[675516.650740] type=1702 audit(1466769981.126:9873): op=linkat ppid=19637 pid=19641 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=22 comm="git" exe="/usr/lib/git-core/git" res=0
[675516.650752] type=1302 audit(1466769981.126:9874): item=0 name="/home/www/yii/rantech/.git/objects/39/tmp_obj_6zT1di" inode=141342554 dev=00:19 mode=0100444 ouid=501 ogid=20 rdev=00:00 nametype=NORMAL
[675516.658869] type=1702 audit(1466769981.134:9875): op=linkat ppid=19637 pid=19641 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=22 comm="git" exe="/usr/lib/git-core/git" res=0
[675516.658897] type=1302 audit(1466769981.134:9876): item=0 name="/home/www/yii/rantech/.git/objects/75/tmp_obj_CIF89k" inode=141342555 dev=00:19 mode=0100444 ouid=501 ogid=20 rdev=00:00 nametype=NORMAL
原文地址:【No.1】监控Linux性能25个命令行工具
标签:CPU 负载 load linux 性能 监控
智能推荐
- 最有用的Linux命令行使用技巧集锦
- 【实战】Docker 入门实战一:安装Dockeer
- 【No.2】监控Linux性能25个命令行工具
- 【运维工具】logrotate 日志管理神器
- 【Linux】Linux 常用命令汇总
【No.1】监控Linux性能25个命令行工具的更多相关文章
- 【No.2】监控Linux性能25个命令行工具
接着上一篇博文继续 [No.1]监控Linux性能25个命令行工具 10:mpstat -- 显示每个CPU的占用情况 该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一 ...
- 显示器 Linux 性能 18 (一个命令行工具传递)
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因. ...
- [Linux] tmux 终端复用命令行工具
tmux 终端复用命令行工具 tmux 是一款终端复用命令行工具,通常用于 Terminal 的窗口管理.可以在终端软件重启后通过命令行恢复上次的 session. 安装运行 macOS 上使用 Ho ...
- Linux强制杀进程命令行工具
需求, 有时候我们会有手动启动程序, 但是又在后台, 没有像服务那样有start, 和stop的程序, 这时候需要用强制杀进程方式 涉及工具, awk, sed, xargs, kill 需求一: 已 ...
- 20个linux命令行工具监视性能(下)
昨天晚上第一次翻译了<20 Command Line Tools to Monitor Linux Performance>中的前十个命令,翻译得不是很好,今天晚上继续把后面的十个也翻译给 ...
- 微软开放技术发布针对 Mac 和 Linux 的更新版 Azure Node.JS SDK 和命令行工具
发布于 2013-12-04 作者 Eduard Koller 这次为我们使用Linux 的朋友带来了更多关于部署云上虚拟机的消息.今天,微软开放技术有限公司 (MS Open Tech),想与大家分 ...
- 从零开始打造个人专属命令行工具集——yargs完全指南
前言 使用命令行程序对程序员来说很常见,就算是前端工程师或者开发gui的,也需要使用命令行来编译程序或者打包程序 熟练使用命令行工具能极大的提高开发效率,linux自带的命令行工具都非常的有用,但是这 ...
- -Shell 命令行工具 Cmder Babun Zsh MD
目录 目录 Cmder:window 下增强型的 cmd + bash 简介 配置 解决中文乱码问题 添加到右键菜单 添加至环境变量 修改命令提示符号 自定义aliases Readme.md 设置c ...
- Linux 性能监控之命令行工具
引言 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的 ...
随机推荐
- Codeforces Gym 100203I I - I WIN 网络流最大流
I - I WINTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.acti ...
- Android 下载文件 显示进度条
加入两个权限 一个是联网,另一个是读写SD卡 <uses-permission android:name="android.permission.INTERNET">& ...
- asp.net控件开发基础(1)(转)原文更多内容
asp.net本身提供了很多控件,提供给我们这些比较懒惰的人使用,我认为控件的作用就在此,因为我们不想重复工作,所以要创建它,这个本身便是一个需求的关系,所以学习控件开发很有意思. wrox网站上有本 ...
- [LintCode] Trapping Rain Water
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- C# EventWaitHandle
线程同步模型: http://www.xue5.com/Developer/CSharp/755821_2.html http://www.cftea.com/c/2012/03/5518.asp h ...
- BZOJ2190 [SDOI2008]仪仗队(欧拉函数)
与HDU2841大同小异. 设左下角的点为(1,1),如果(1,1)->(x,y)和(1,1)->(x',y')向量平行,那只有在前面的能被看见.然后就是求x-1.y-1不互质的数对个数. ...
- BZOJ4123 : [Baltic2015]Hacker
黑掉的一定是一个长度为$\lfloor\frac{n+1}{2}\rfloor$的区间. 于是枚举初始点,然后查询包含它的区间的最小值. 通过维护前后缀最小值+单调队列$O(n)$解决. #inclu ...
- xubuntu12.04配置
更改源:我用上海交通大学的 首先备份Ubuntu12.04源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup #(备份下当前 ...
- WebRTC手记之本地视频采集
转载请注明出处:http://www.cnblogs.com/fangkm/p/4374610.html 前面两篇文章介绍WebRTC的运行流程和使用框架接口,接下来就开始分析本地音视频的采集流程.由 ...
- 使用Expression做Linq的參數化排序
Linq非常的好用,減少大量的資料庫操作手序,使用具名的類別,減少了在程式中寫SQL寫錯字的可能性,問題來了,如果我想用QueryString中的參數,作為排序的依據,但是因為是具名的類別,不能指定字 ...