是否需要监视Linux服务器性能?尝试使用这些内置命令和一些附加工具。大多数发行版都带有大量的Linux监视工具。这些工具提供了可用于获取有关系统活动信息的指标。您可以使用这些工具查找性能问题的可能原因。当涉及系统分析和调试Linux服务器问题时,以下讨论的命令是一些最基本的命令:
- 找出系统瓶颈
- 磁盘(存储)瓶颈
- CPU和内存瓶颈
- 网络瓶颈。
1. top –流程活动监视命令
top命令显示Linux进程。它提供正在运行的系统的动态实时视图,即实际过程活动。默认情况下,它显示服务器上运行的最耗CPU的任务,并每五秒钟更新一次列表。
图01:Linux top命令
常用的热键和顶级Linux监控工具
以下是有用的热键列表:
热键 | 用法 |
---|---|
t | 打开和关闭显示摘要信息。 |
m | 打开和关闭显示内存信息。 |
a | 按各种系统资源的主要使用者对显示进行排序。用于快速识别系统上需要大量性能的任务。 |
f | 进入顶部的交互式配置屏幕。有助于为特定任务设置顶部。 |
o | 使您可以交互地选择顶部的顺序。 |
r | 发出renice命令。 |
k | 发出kill命令。 |
z | 打开或关闭颜色/单色 |
2. vmstat –虚拟内存统计信息
vmstat命令报告有关进程,内存,页面调度,块IO,陷阱和cpu活动的信息。# vmstat 3
样本输出:
procs -----------内存---------- --- swap-- ----- io ---- --system-- ----- cpu ------
rb swpd可用buff缓存在cs
中用sy id bost 0 0 0 2540988 522188 5130400 0 0 2 32 4 2 4 1 96 0 0
1 0 0 2540988 522188 5130400 0 0 0 720 1199 665 1 0 99 0 0
0 0 0 2540956 522188 5130400 0 0 0 0 1151 1569 4 1 95 0 0
0 0 0 2540956 522188 5130500 0 0 0 6 1117 439 1 0 99 0
0 0 0 2540940 522188 5130512 0 0 0 536 1189 932 1 0 98 0 0
0 0 0 2538444 522188 5130588 0 0 0 0 1187 1417 4 1 96 0 0
0 0 0 2490060 522188 5130640 0 0 0 18 1853 1123 5 1 94 0 0
显示内存利用率Slabinfo
# vmstat -m
获取有关活动/非活动内存页面的信息
# vmstat -a
如何找出Linux资源利用率来检测系统瓶颈?
3. w –找出谁登录以及他们在做什么
w命令显示有关计算机上当前用户及其进程的信息。样本输出:# w username
# w vivek
17:58:47最多5天,20:28、2个用户,平均负载:0.36、0.26、0.24
用户LOGIN @ IDLE JCPU PCPU的
用户身份root pts / 0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim /etc/resolv.conf
root pts / 1 10.1.3.145 17:43 0.00s 0.03s 0.00sw
4.uptime–告诉Linux系统已经运行了多长时间
uptime命令可用于查看服务器已运行多长时间。当前时间,系统已运行多长时间,当前登录了多少用户以及过去1、5和15分钟的平均系统负载。# uptime
输出:
18:02:41上41天,23:42,1个用户,平均负载:0.00、0.00、0.00
1可以认为是最佳负载值。负载可能因系统而异。对于单个CPU系统1-3和SMP系统6-10,负载值是可以接受的。
5. ps –显示Linux进程
ps命令将报告当前进程的快照。要选择所有进程,请使用-A或-e选项:# ps -A
示例输出:
PID TTY TIME CMD
1?00:00:02 init
2吗?00:00:02迁移/ 0
3吗?00:00:01 ksoftirqd / 0
4吗?00:00:00看门狗/ 0
5?00:00:00迁移/ 1
6吗?00:00:15 ksoftirqd / 1
....
.....
4881?00:53:28 java
4885 tty1 00:00:00 mingetty
4886 tty2 00:00:00 mingetty
4887 tty3 00:00:00 mingetty
4888 tty4 00:00:00 mingetty
4891 tty5 00:00:00 mingetty
4892 tty6 00: 00:00 mingetty
4893 ttyS1 00:00:00 agetty
12853吗?00:00:00 cifsoplockd
12854吗?00:00:00通知
14231?00:10:34 lighttpd
14232吗?00:00:00 php-cgi
54981 pts / 0 00:00:00 vim
55465吗?00:00:00 php-cgi
55546吗?00:00:00 bind9-snmp-stat
55704 pts / 1 00:00:00 ps
ps就像top一样,但是提供了更多信息。
显示长格式输出
# ps -Al
要打开额外的完整模式(它将显示传递给进程的命令行参数):# ps -AlF
显示线程(LWP和NLWP)
# ps -AlFH
进程后监视线程
# ps -AlLm
在服务器上打印所有进程
# ps ax
# ps axu
是否要打印过程树?
# ps -ejH
# ps axjf
# pstree
获取Linux进程的安全性信息
# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM
让我们打印以用户Vivek运行的每个进程
# ps -U vivek -u vivek u
以用户定义的格式配置ps命令输出
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan
尝试仅显示lighttpd的进程ID
# ps -C lighttpd -o pid=
或# pgrep lighttpd
或# pgrep -u vivek php-cgi
打印PID 55977的名称
# ps -p 55977 -o comm=
十大内存消耗过程
# ps -auxf | sort -nr -k 4 | head -10
向我们展示十大CPU消耗过程
# ps -auxf | sort -nr -k 3 | head -10
显示Linux中所有正在运行的进程
6. free –显示Linux服务器内存使用情况
free命令显示系统中空闲和已使用的物理内存和交换内存的总量,以及内核使用的缓冲区。# free
样本输出:
已使用的可用共享缓冲区总数(已缓存)
Mem:12302896 9739664 2563232 0 523124 5154740-
/ +缓冲区/缓存:4061800 8241096
交换:1052248 0 1052248
7. iostat – Montor Linux的平均CPU负载和磁盘活动
iostat命令报告中央处理器(CPU)统计信息以及设备,分区和网络文件系统(NFS)的输入/输出统计信息。# iostat
样本输出:
Linux 2.6.18-128.1.14.el5(www03.nixcraft.in)2009年6月26日
avg-cpu:%user%nice%system%iowait%steal%idle
3.50 0.09 0.51 0.03 0.00 95.86
Device:tps Blk_read / s Blk_wrtn / s Blk_read Blk_wrtn
sda 22.04 31.88 512.03 16193351 260102868
sda1 0.00 0.00 0.00 2166 180
sda2 22.04 31.87 512.03 16189010 260102688
sda3 0.00 0.00 0.00 1615 0
8. sar –监视,收集和报告Linux系统活动
sar命令用于收集,报告和保存系统活动信息。要查看网络计数器,请输入:# sar -n DEV | more
24号网络计数器:# sar -n DEV -f /var/log/sa/sa24 | more
您还可以使用sar显示实时使用情况:# sar 4 5
示例输出:
Linux 2.6.18-128.1.14.el5(www03.nixcraft.in)
2009/06/26 06:45:12 CPU%user%nice%system%iowait%steal%idle
06:45:16 PM所有2.00 0.00全部0.22 0.00 0.00 97.78
06:45:20 PM全部2.07 0.00 0.38 0.03 0.00 97.52
06:45:24 PM全部0.94 0.00 0.28 0.00 0.00 98.78
06:45:28 PM全部1.56 0.00 0.22 0.00 0.00 98.22
06:45:32 PM全部3.53 0.00 0.25 0.03 0.00 96.19
平均:全部2.02 0.00 0.27 0.01 0.00 97.70
9. mpstat –监视Linux上的多处理器使用情况
mpstat命令显示每个可用处理器的活动,处理器0是第一个。mpstat -P ALL显示每个处理器的平均CPU利用率:# mpstat -P ALL
示例输出:
Linux 2.6.18-128.1.14.el5(www03.nixcraft.in)
06/26/2009 06:48:11 PM CPU%user%nice%sys%iowait%irq%soft%steal%idle ins / s
06:全部48:11 PM 3.50 0.09 0.34 0.03 0.01 0.17 0.00 95.86 1218.04
06:48:11 PM 0 3.44 0.08 0.31 0.02 0.00 0.12 0.00 96.04 1000.31
06:48:11 PM 1 3.10 0.08 0.32 0.09 0.02 0.11 0.00 96.28 34.93
06:48:下午11点2 4.16 0.11 0.36 0.02 0.00 0.11 0.00 95.25 0.00
06:48:11 PM 3 3.77 0.11 0.38 0.03 0.01 0.24 0.00 95.46 44.80
06:48:11 PM 4 2.96 0.07 0.29 0.04 0.02 0.10 0.00 96.52 25.91
06:48:11 PM 5 3.26 0.08 0.28 0.03 0.01 0.10 0.00 96.23 14.98
06:48:11 PM 6 4.00 0.10 0.34 0.01 0.00 0.13 0.00 95.42 3.75
06:48:11 PM 7 3.30 0.11 0.39 0.03 0.01 0.46 0.00 95.69 76.89
10. pmap – Linux上的Montor进程内存使用情况
pmap命令报告进程的内存映射。使用此命令找出内存瓶颈的原因。# pmap -d PID
要显示pid#47394的进程内存信息,请输入:# pmap -d 47394
示例输出:
47394:/ usr / bin / php-cgi
地址
千字节模式偏移设备映射0000000000400000 2584 rx-- 0000000000000000 008:00002 php-cgi
0000000000886000 140 rw --- 0000000000286000 008:00002 php-cgi
00000000008a9000 52 rw --- 00000000008a9000 000: 00000 [anon]
0000000000aa8000 76 rw --- 00000000002a8000 008:00002 php-cgi
000000000f678000 1980 rw --- 000000000f678000 000:00000 [anon]
000000314a600000 112 rx-- 0000000000000000 008:00002 ld-2.5.so
000000314a81b000 4 r --- -000000000001b000 008:00002 ld-2.5.so
000000314a81c000 4 rw --- 000000000001c000 008:00002 ld-2.5.so
000000314aa00000 1328 rx-- 0000000000000000 008:00002 libc-2.5.so
000000314ab4c000 2048 ----- 000000000014c000 008:00002 libc-2.5.so
.....
......
..
00002af8d48fd000 4 rw --- 0000000000006000 008:00002 xsl.so
00002af8d490c000 40 rx-- 0000000000000000 008: 00002
libnss_files-2.5.so 00002af8d4916000 2044 ----- 000000000000a000 008:00002
libnss_files-2.5.so 00002af8d4b15000 4 r ---- 0000000000009000 008:00002
libnss_files-2.5.so 00002af8d4b16000 4 rw --- 000000000000a000 008:00-libnss_file 2.5.so
00002af8d4b17000 768000 rw-s- 0000000000000000 000:00009零(已删除)
00007fffc95fe000 84 rw --- 00007ffffffea000 000:00000 [堆栈]
ffffffffff600000 8192 ----- 0000000000000000 000:00000 [anon]
映射:933712K可写/私有:4304K共享:768000K
最后一行非常重要:
- 映射:933712K映射到文件的内存总量
- 可写/专用:4304K专用地址空间量
- 共享:768000K此过程与其他人共享的地址空间量
11. netstat – Linux网络和统计监视工具
netstat命令显示网络连接,路由表,接口统计信息,伪装连接和多播成员身份。# netstat -tulpn
# netstat -nat
12. ss –网络统计
ss命令用于转储套接字统计信息。它允许显示类似于netstat的信息。请注意,netstat通常已过时。因此,您需要使用ss命令。在Linux上ss的所有TCP和UDP套接字:# ss -t -a
或# ss -u -a
显示具有进程SELinux安全上下文的所有TCP套接字:# ss -t -a -Z
请参阅以下有关ss和netstat命令的资源:
13. iptraf –在Linux上获取实时网络统计信息
iptraf命令是交互式彩色IP LAN监视器。它是基于ncurses的IP LAN监视器,它生成各种网络统计信息,包括TCP信息,UDP计数,ICMP和OSPF信息,以太网负载信息,节点状态,IP校验和错误等。它可以以易于阅读的格式提供以下信息:
- TCP连接的网络流量统计
- 通过网络接口的IP流量统计
- 协议网络流量统计
- 通过TCP / UDP端口和数据包大小进行的网络流量统计
- 第2层地址的网络流量统计
图02:常规接口统计信息:按网络接口的IP流量统计信息
图03 TCP连接的网络流量统计
在Centos / RHEL / Fedora Linux上安装IPTraf以获取网络统计信息
14. tcpdump –详细的网络流量分析
tcpdump命令是在网络上转储流量的简单命令。但是,您需要充分了解TCP / IP协议才能使用此工具。例如,要显示有关DNS的流量信息,请输入:# tcpdump -i eth1 'udp port 53'
查看往返端口80的所有IPv4 HTTP数据包,即仅打印包含数据的数据包,而不打印例如SYN和FIN数据包以及仅ACK数据包,输入:# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Show all FTP会话到202.54.1.5,输入:将# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'
所有HTTP会话打印到192.168.1.5:# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'
使用wirehark查看有关文件的详细信息,输入:# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80
15. iotop – Linux I / O监视器
iotop命令监视器,使用Linux内核的I / O使用信息。它显示了按服务器上的进程或线程排序的当前I / O使用情况表。$ sudo iotop
示例输出:Linux iotop:检查什么在压力和增加硬盘上的负载
16. htop –交互式过程查看器
htop是针对Linux的免费且开源的基于ncurses的进程查看器。它比top命令好得多。很好用。您可以选择不使用其PID或退出htop界面进行杀死或重新注册的进程。$ htop
样本输出:
17.atop–高级Linux系统和进程监视器
atop是一个非常强大的交互式监视器,可以查看Linux系统上的负载。从性能的角度来看,它显示了最关键的硬件资源。您可以快速查看CPU,内存,磁盘和网络性能。它显示哪些进程负责在进程级别上指示的与CPU和内存负载有关的负载。$ atop
18. ac和lastcomm –
您必须监视Linux服务器上的进程和登录活动。psacct或acct软件包包含多个实用程序,用于监视流程活动,包括:
- ac命令:显示有关用户连接时间的统计信息
- lastcomm命令:显示有关先前执行的命令的信息
- accton命令:打开或关闭进程记帐
- sa命令:汇总会计信息
19. monit –流程监督
Monit是一个免费的开源软件,可充当过程监督。它具有重启失败服务的能力。您可以出于相同目的使用Systemd,daemontools或任何其他此类工具。本教程显示了如何在Debian或Ubuntu Linux上将monit安装和配置为进程监督。
20. nethogs-找出在Linux上使用最多带宽的PID
NetHogs是一个小型但方便的网络顶部工具。它按进程名称(例如Firefox,wget等)将带宽分组。如果网络流量突然爆发,请启动NetHogs。您将看到哪个PID引起带宽激增。Linux:使用Nethogs工具查看每个进程的带宽使用情况$ sudo nethogs
21. iftop –按主机显示接口上的带宽使用情况
iftop命令在给定的接口名称(例如eth0)上侦听网络流量。它按主机对显示当前带宽使用情况的表。$ sudo iftop
22. vnstat –基于控制台的网络流量监视器
vnstat是易于使用的基于控制台的Linux网络流量监视器。它会记录选定接口的每小时,每日和每月网络流量。$ vnstat
23. nmon – Linux系统管理员,调谐器,基准测试工具
nmon是用于调整目的的Linux sysadmin的终极工具。它可以显示来自cli的CPU,内存,网络,磁盘,文件系统,NFS,顶级进程资源和分区信息。安装和使用nmon工具监视Linux系统性能$ nmon
24.glances–密切关注Linux系统
glances是一个开源的跨平台监视工具。它在小屏幕上提供了大量信息。它也可以在客户端/服务器模式下工作。Linux:通过Glances Monitor监视您的系统$ glances
25. strace –监视Linux上的系统调用
是否要跟踪Linux系统调用和信号?尝试使用strace命令。这对于调试Web服务器和其他服务器问题很有用。了解如何使用它来跟踪过程,并查看它在做什么。
26. /proc/filesystem–各种Linux内核统计信息
/ proc文件系统提供有关各种硬件设备的详细信息以及其他Linux内核信息。有关更多详细信息,请参见Linux内核/ proc文档。常见的/ proc示例:# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts
27. Nagios – Linux服务器/网络监控
Nagios是流行的开源计算机系统和网络监视应用程序软件。您可以轻松监视所有主机,网络设备和服务。当出现问题时,它可以发送警报;当情况变得更好时,它可以再次发出警报。FAN是 “全自动Nagios”。FAN的目标是提供Nagios安装,其中包括Nagios社区提供的大多数工具。FAN提供标准ISO格式的CDRom映像,可以轻松地轻松安装Nagios服务器。除此之外,发行版中还包含了大量工具,以改善Nagios的用户体验。
28. Cacti –基于Web的Linux监视工具
Cacti是一个完整的网络图形解决方案,旨在利用RRDTool的数据存储和图形功能。Cacti开箱即用地提供了快速轮询器,高级图形模板,多种数据采集方法以及用户管理功能。所有这些都封装在一个直观,易于使用的界面中,该界面对于LAN大小的安装以及具有数百个设备的复杂网络都是有意义的。它可以提供有关网络,CPU,内存,登录用户,Apache,DNS服务器等的数据。请参阅如何在CentOS / RHEL下安装和配置Cacti网络绘图工具。
29. KDE System Guard –实时Linux系统报告和图形化
KSysguard是用于KDE桌面的启用网络的任务和系统监视器应用程序。该工具可以在ssh会话上运行。它提供了许多功能,例如支持监视本地和远程主机的客户端/服务器体系结构。图形前端使用所谓的传感器来检索其显示的信息。传感器可以返回简单值或更复杂的信息(例如表格)。对于每种信息,都提供一个或多个显示。显示组织在工作表中,可以相互独立保存和加载。因此,KSysguard不仅是简单的任务管理器,还是控制大型服务器场的非常强大的工具。
图05 KDE System Guard {图片来源:维基百科}
有关详细用法,请参见KSysguard手册。
30. Gnome Linux系统监视器
使用“系统监视器”应用程序,您可以显示基本系统信息并监视系统进程,系统资源的使用情况和文件系统。您还可以使用系统监视器来修改系统的行为。尽管不如KDE System Guard强大,但它提供了可能对新用户有用的基本信息:
- 显示有关计算机硬件和软件的各种基本信息。
- Linux内核版本
- GNOME版本
- 硬件
- 安装的内存
- 处理器和速度
- 系统状态
- 当前可用磁盘空间
- 工艺流程
- 内存和交换空间
- 网络使用
- 文件系统
- 列出所有已挂载的文件系统以及有关每个文件系统的基本信息。
图06 Gnome系统监视器应用程序
奖励:其他工具
其他一些工具:
- nmap –扫描服务器中的开放端口。
- lsof –列出打开的文件,网络连接等等。
- ntop基于Web的工具– ntop是查看网络使用情况的最佳工具,其方式类似于top命令对进程所做的方式,即它是网络流量监视软件。您可以查看网络状态,UDP,TCP,DNS,HTTP和其他协议的流量的协议明智分布。
- Conky – X窗口系统的另一个很好的监视工具。它是高度可配置的,并且能够监视许多系统变量,包括CPU的状态,内存,交换空间,磁盘存储,温度,进程,网络接口,电池电量,系统消息,电子邮件收件箱等。
- GKrellM –可用于监视CPU,主内存,硬盘,网络接口,本地和远程邮箱以及许多其他东西的状态。
- mtr – mtr在单个网络诊断工具中结合了traceroute和ping程序的功能。
- vtop – Linux上的图形终端活动监视器
- gtop – 出色的Linux / macOS Unix终端系统监控仪表板
我错过了什么?请在评论中添加您喜欢的系统驱动工具。
发言者: Vivek Gite
作者是nixCraft的创建者,经验丰富的sysadmin,DevOps工程师以及Linux操作系统/ Unix shell脚本的培训师。通过RSS / XML feed或每周的电子邮件通讯,获取有关SysAdmin,Linux / Unix和开源主题的最新教程。