Linux系统的性能监控工具(top、ps、netstat)介绍

一、监控工具介绍

1、概述
企业级Linux发行版附带了许多监控工具。
一些工具可处理度量标准,提供更好的格式化输出,便于我们理解系统活动。
一些工具是针对特定的性能度量标准(比如磁盘I/O)的,并可以给出更详细的信息。
熟悉这些系统工具我们就可以知道系统发生了什么,帮助我们找到问题可能出现的原因。
2、工具功能描述

top 提供运行系统的动态实时视图。显示系统摘要信息以及任务列表
uptime 显示系统平均负载
ps、pstree 提供当前进程列表
free 显示系统中空闲内存和己使用内存的数量mpstat 报告处理器相关的统计数据
vmstat 报告进程、内存、磁盘、系统、CPU的统计信息
iostat 报告CPU统计数据,还有设备和分区的输入/输出统计数据
netstat,ss 显示相关网络统计信息sar 收集、报告系统活动信息
numastat 显示每个NUMA节点的内存统计信息pmap 报告一个进程的内存映射
iptraf 交互式局域网监控程序
tcpdump,wireshark 用来捕捉和分析网络流量
strace,Itrace 系统调用和库调用跟踪程序

二、top

top提供一个运行系统的动态实时视图。它可以显示系统摘要信息,以及目前正在由Linux内核管理的任务列表。
默认情况下,它会显示运行在服务器上最占用CPU的任务,并每3s更新列表。
可以通过进行标识符(PID)、内存使用(%MEM)、优先级(PR)、命令名称(COMMAND)等对进程进行排序
在这里插入图片描述
top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏
1、第一部分 — 最上部的 系统信息栏 :
第一行:
在这里插入图片描述
“00:23:40”为系统当前时刻;“39 min“”为系统启动后到现在的运作时间;
“2 user”为当前登录到系统的用户,更确切的说是登录到用户的终端数 — 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;
“load average”为当前系统负载的平均值,后面的三个值分别为1分钟、5分钟、15分钟系统的平均负载,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;
第二行:
在这里插入图片描述
“227 total”为当前系统进程总数; “2 running”为当前运行中的进程数; “225 sleeping”为当前处于等待状态中的进程数;
“0 stoped”为被停止的系统进程数; “0 zombie”为僵尸状态的任务数量;
第三行(Cpus):分别表示了 CPU 当前的使用率;
在这里插入图片描述
第四行(Mem):分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;
在这里插入图片描述
第五行(Swap):
表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
在这里插入图片描述
2、第二部分 — 中间部分的内部命令提示栏:
在这里插入图片描述
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:
s – 改变画面更新频率
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量
q – 退出 top
s – 改变画面更新周期

top命令按CPU排序
运行top命令后,键入大写P。

有两种途径:

a) 打开大写键盘的情况下,直接按P键

b) 未打开大写键盘的情况下,Shift+P键
在这里插入图片描述
按进程的内存使用率排序
运行top命令后,键入大写M。

有两种途径:

a) 打开大写键盘的情况下,直接按M键

b) 未打开大写键盘的情况下,Shift+M键
在这里插入图片描述
3、第三部分 — 最下部分的进程列表栏:
在这里插入图片描述
PID:进程标识符
USER:任务启动者的有效用户名
PR:任务的优先级
NI:任务的nice值
VIRT:任务使用的虚拟内存总量
RES:常驻内存的大小
SHR:任务所使用的共享内存量,它反映了可以和其他进程共享的内存
S:进程状态 {
‘D’=不可中断的睡眠
‘R’=正在运行
‘S’=睡眠
‘T’=跟踪或停止
‘Z’=僵尸
}
%CPU:CPU总时间的百分比
%MEM:任务当前使用的可用物理内存
TIME+:自系统开启开始任务所使用的cpu总时间
COMMAND:显示用于启动任务的命令

三、PS

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
linux上进程有5种状态:

  1. 运行(正在运行或在运行队列中等待)

  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)

  3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)

  4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码:

D 不可中断 uninterruptible sleep (usually IO)

R 运行 runnable (on run queue)

S 中断 sleeping

T 停止 traced or stopped

Z 僵死 a defunct (”zombie”) process

语法:

ps [options]

常用的选项:

-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程

ps -ef 和ps aux有何不同?
ps -ef 是用标准的格式显示进程的、其格式如下
在这里插入图片描述
ps aux 是用BSD的格式来显示、其格式如下
在这里插入图片描述

三、netstat

Netstat(network statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接口设备的状态信息,以及与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况。
1、列出所有连接

$ netstat -a

2、列出tcp或udp连接

使用 -t 选项列出 TCP 协议的连接:

$ netstat -at

使用 -u 选项列出 UDP 协议的连接:

$ netstat -au

3、 禁用反向域名解析,加快查询速度
默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。

$ netstat -ant

4、只列出监听(LISTEN)中的连接
任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。

$ netstat -tnl

5、获取进程名、进程号以及用户 ID

~$ sudo netstat -nlpt

使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

使用 -ep 选项可以同时查看进程名和用户名。

$ sudo netstat -ltpe

6、 显示内核路由信息
使用 -r 选项打印内核路由信息。打印出来的信息与 route 命令输出的信息一样。我们也可以使用 -n 选项禁止域名解析。

 netstat -rn

在这里插入图片描述

发布了114 篇原创文章 · 获赞 30 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_41476978/article/details/88117318
今日推荐