本帖最后由 灵峰气韵 于 2022-5-25 16:50 编辑
【应用场景】
鉴于部分客户对业务系统服务器有安全保护要求,不允许植入工具对其进行性能分析和收集,故
列出Linux服务器负载信息的手工命令收集方式。Windows服务器的Perfmon是自带的收集工具
(详见https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=208585),不需要植入。
【注意事项】
命令查看 Linux 当前负载状态,只能记录瞬时值,无法收集平均值。
一、top命令详解
1、第一行load average:行,可以看出当前系统的负载情况。
08:10:00 — 当前系统时间。
304 days, 8:55 — 系统已经运行了 304 天 8 小时 55 分钟(在这期间没有重启过)。
1 users — 当前有 1 个用户登录系统。
load average: 0.92, 1.23 , 1.50 — load average 后面的三个数分别是 1 分钟、
5 分钟、15 分钟的负载情况。
【注释】
load average 数据是每隔 5 秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这
个数除以逻辑 CPU 的数量,结果高于 5 的时候就表明系统在超负荷运转了。
2、第二行Tasks行,可以看出系统进程运行情况。
Tasks — 任务(进程),系统现在共有 334 个进程,其中处于运行中的有 2 个,
332 个在休眠(sleep),stoped 状态的有 0 个,zombie 状态(僵尸)的有 0 个。
3、第三行CPU(s):行,可以看出当前CPU状态。
4.2% us — 用户空间占用 CPU 的百分比。
2.0% sy — 内核空间占用 CPU 的百分比。
0.0% ni — 改变过优先级的进程占用 CPU 的百分比。
93.4% id — 空闲 CPU 百分比。
0.1% wa — IO 等待占用CPU 的百分比。
4、第四行内存状态行,可以看出服务器当前内存的使用情况。
65789208k total — 物理内存总量(62.74GB)。
24213288k used — 使用中的内存总量(23GB)。
19098200k free — 空闲内存总量(18.2GB)。
22477720k buff — 缓存的内存量 (21.44GB)。
5、第五行,交换分区使用状态行,可以看出交换分区使用情况。
67104764k total — 交换区总量(64GB)。
1320448k used — 使用的交换区总量(1.26GB)。
65784316k free — 空闲交换区总量(62.74GB)。
40749692k cached — 缓冲的交换区总量(4GB)。
【注意】
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量
(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去
使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到 free 中去,因
此在 Linux 上 free 内存会越来越少,但不用为此担心。这里有个近似的计算公式:第四行的 free
+ 第四行的 buffers + 第五行的 cached,按这个公式可计算此台服务器的可用内存:
19098200KB +22477720KB +40749692KB= 43.6GB。
二、free命令详解
Linux的内存使用情况,除了上述的用top命令获取之外,也可以利用以下方式进行计算。一般常
见的用法是free -m(以MB为单位显示内存使用情况)。
【注意】
内存剩余量为 free + buffers + cached,按这个公式可计算此台服务器的可用内存:8.85G
+193M +4.6GB = 13.6GB。
15953M total — 物理内存总量(16GB)。
6885M used — 使用中的内存总量(6.7GB)。
9067M free — 空闲内存总量(8.85G)。
193M buffers — 缓存的内存量(193M)。
4695M cached — 缓冲的交换区总量(4.6GB)。
三、iostat 命令详解
Iostat命令常用于Linux系统查看当前磁盘的IO状态。包括磁盘IOPS、吞吐量、响应时间、磁盘繁
忙度等指标。常用的命令为iostat -x -m 5。
参数解释:
-x 参数,iostat 一个比较常用的选项,该选项将用于显示和 io 相关的扩展(详细)数据。
-m 参数,iostat 以 MB 为单位显示磁盘读写吞吐。
5 代表,每五秒收集一次信息。
输出项解释:
Device,设备列,看见当前所有的磁盘。
r/s,每秒 IO 读的次数。
w/s,每秒 IO 写的次数。
rMB/s,每秒 IO 读的吞吐量,单位 MB。
wMB/s,每秒 IO 写的吞吐量,单位 MB。
await,磁盘的相应时间,单位 ms, 一般地系统 IO 响应时间应该低于 5ms,如果大于 10ms 就比
较大了。
%unil,磁盘的繁忙度,单位%,一般地,如果该参数是 100%表示该磁盘已经接近满负荷运行了
。
四、netstat命令详解
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及
每一个网络接口设备的状态信息。
参数解释:
-a 或--all:显示所有连线中的 Socket。
-h 或--help:在线帮助。
-l 或--listening:显示监控中的服务器的 Socket。
-n 或--numeric:直接使用 IP 地址,而不通过域名服务器。
-p 或--programs:显示正在使用 Socket 的程序识别码和程序名称。
-t 或--tcp:显示 TCP 传输协议的连线状况。
-u 或--udp:显示 UDP 传输协议的连线状况。
-v 或--verbose:显示指令执行过程。
-V 或--version:显示版本信息。用法举例:
[root@HFOA ~]# netstat -a # 列出所有端口
[root@HFOA ~]# netstat -at # 列出所有TCP 端口
[root@HFOA ~]# netstat -au # 列出所有 UDP 端口
[root@HFOA ~]# netstat -l # 只显示监听端口
[root@HFOA ~]# netstat -lt # 显示监听TCP 端口
[root@HFOA ~]# netstat -lu # 显示监听 UDP 端口
[root@HFOA ~]# netstat -s # 显示所有端口的统计信息
root@HFOA ~]# netstat -st # 显示所有 TCP 的统计信息
[root@HFOA ~]# netstat -su # 显示所有 UDP 的统计信息
root@HFOA ~]# netstat -p #显示 PID 和进程名称
[root@HFOA ~]# netstat -antp | grep ssh #查看所有的 SSH 服务网络连接
[root@HFOA ~]# netstat -nltp | grep 1521 #查看监听端口是 1521 的 TCP 网络连接。
[root@HFOA ~]# netstat -natp | grep 192.200.244.180. # 查 看 所 有 的 与
192.200.244.180 有关的 TCP 网络连接
[root@HFOA ~]# netstat -natp | grep java #查看所有的 java 程序TCP 网络连接输出项解释:
Proto 协议列,该行显示网络连接所用到的协议。
Recv-Q 表示网络接收队列,表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走
。
Send-Q 表示网路发送队列,对方没有收到的数据或者说没有 Ack 的,还在本地缓冲区。如果发送
队列Send-Q 不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快
。
Local Address 本地地址和端口。
Foreign Address 远程地址和端口。
State 网络连接状态。
PID/Program name PID 及程序名称。
【注意事项】
Recv-Q ,Send-Q 这两个值通常应该为 0,如果不为 0 可能是有问题的。packets 在两个队列里
都不应该有堆积状态。可接受短暂的非 0 情况。
五、df命令详解
Linux中df命令的功能是用来检查Linux服务器的文件系统的磁盘空间占用情况。可以利用该命令
来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
参数解释:
-a, --all 包含所有的具有 0 Blocks 的文件系统。
--block-size={SIZE} 使用 {SIZE} 大小的 Blocks。
-h, --human-readable 使用人类可读的格式(常用)。
-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024。
-k, --kilobytes 就像是 --block-size=1024。
-m, --megabytes 就像 --block-size=1048576。
--no-sync 获取信息前不 sync (预设值)。
--sync 在获取信息前 sync。
-P, --portability 使用 POSIX 输出格式。
-t, --type=TYPE 限制列出文件系统的 TYPE。
-T, --print-type 显示文件系统的形式。
-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE。
--help 显示帮助。
--version 输出版本。用法举例:
df -h; 查看当前服务器的磁盘容量及使用率。 |