查看和监测系统性能指标的方法和 Linux 命令
一、 综述
系统运行状况主要包括如下几部分信息:
负载
CPU
内存
交换区
磁盘及 IO 负载
网络
运行时间
用户数
进程任务数
操作系统级别上的常见性能问题或者优化主要可以体现在以下方面:
计算(系统负载、CPU 利用率、运行状况)
存储(内存占用、磁盘占用、IO 负载、文件打开情况)
网络(网络流量、路由信息)
其他系统信息(系统信息、系统时间、用户组)
比如:系统负载(tload)、CPU 核数、CPU 利用率(top)、内存占用(free)、磁盘占
用(df | du)、IO 流量(iostat | iotop)、网络流量(ifstat)
可以根据相关系统参数或者运行指标,进行系统的优化配置,JVM 调优等。
二、 以下罗列出常用的查看和监控命令:
类别
系统负载
CPU 信息
命令
tload
描述
显示系统负载状况
uptime
查看 Linux 系统负载信息
top
显示或管理执行中的程序
计算
mpstat
显示各个可用 CPU 的状态
运行状况
内存占用
ps
time
sar
free
报告当前系统的进程状态
统计给定命令所花费的总时间
系统运行状态统计工具
显示内存的使用情况
vmstat
显示虚拟内存状态
存储
磁盘占用
df
du
fdisk
quota
pvs
pvscan
lvscan
显示磁盘的相关信息
显示每个文件和目录的磁盘使用空间
查看磁盘使用情况和磁盘分区
显示磁盘已使用的空间与限制
输出物理卷信息报表
扫描系统中所有硬盘的物理卷列表
扫描逻辑卷
badblocks
查找磁盘中损坏的区块
IO 负载
iostat
iotop
监视系统输入输出设备和 CPU 的使用情况
用来监视磁盘 I/O 使用状况的工具
文件打开情况
lsof
显示 Linux 系统当前已打开的所有文件列表
网络状态
网络流量
网络
netstat
查看 Linux 中网络系统状态信息
iptstate
显示 iptables 的工作状态
ss
ifstat
iptraf
ifconfig
ethtool
获取 socket 统计信息
统计网络接口流量状态
实时地监视网卡流量
配置和显示 Linux 系统网卡的网络参数
显示或修改以太网卡的配置信息
配置信息
hostname
显示和设置系统的主机名
route
显示并设置 Linux 中静态路由表
iptables
Linux 上常用的防火墙软件
env
ulimit
显示系统中已存在的环境变量
控制 shell 程序的资源
uname
显示 Linux 系统信息
arch
显示当前主机的硬件架构类型
其 他
系 统
信息
系统信息
系统时间
用户组
系统追踪
date
users
groups
last
lastlog
history
显示或设置系统时间与日期
显示当前登录系统的所有用户
显示指定用户所属的工作组
列出目前与过去登入系统的用户相关信息
显示系统中所有用户最近一次登录信息
用于显示历史命令
三、 部分命令用法说明
ulimit -a
输出分析
max user processes
(-u) 65535:操作系统文件句柄数
---------------------------------------------------------------------------------------------------------------------------------
ifconfig
是一个用来查看、配置、启用或禁用网络接口(网络设备)的工具,可以用这个工具来临时
性的配置网卡的 IP 地址、掩码、广播地址、网关等。
输出分析
em1:网卡名称 HWaddr 74:86:7A:E9:FA:E8:MAC 地址
UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500
(最大传输单元)
---------------------------------------------------------------------------------------------------------------------------------
ethtool
是用于查询及设置网卡参数的命令
举例
ethtool em1
参数说明
em1:默认为内网
输出分析
通过 Speed 来查看网卡的速度 如 1000Mb/s=1000Mbit 秒,千兆网卡;
---------------------------------------------------------------------------------------------------------------------------------
sar(System Activity Reporter 系统活动情况报告)
是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,
包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程
活动及 IPC 有关的活动等。
举例
sar -n DEV 1 100000000
参数说明
-n:记录网络使用情况(选项使用四个不同的开关:DEV、EDEV、SOCK 和 FULL。DEV 显示
网络接口信息,EDEV 显示关于网络错误的统计数据,SOCK 显示套接字信息)
DEV: 显示网络接口信息
1:采样间隔
100000000:采样次数
输出分析
rxkB/s: 每秒收的数据量(kB 为单位)
txkB/s: 每秒发的数据量(kB 为单位)
注:sar 命令,有一个图形化的配套工具,叫 ksar,可以远程监控并保存监控的信息。
https://sourceforge.net/projects/ksar/
---------------------------------------------------------------------------------------------------------------------------------
iostat
主要用于监控系统设备的 IO 负载情况
举例
iostat -x 1
参数说明
-x:用于显示和 io 相关的扩展数据
1:每隔 1s 统计一次
输出分析
await:每一个 IO 请求的平均处理时间(可以理解为 IO 的响应时间),一般系统 IO 响应时
间应该低于 5ms
%util:IO 利用率(统计时间内所有处理 IO 时间除以总共统计时间),该参数暗示了设备的
繁忙程度,如果值过高再表示磁盘存在瓶颈
---------------------------------------------------------------------------------------------------------------------------------
测磁盘纯写速度
time dd if=/dev/zero of=/var/test bs=8k count=1000000
测磁盘纯读速度
time dd if=/var/test of=/dev/null bs=8k
参数说明
time:用于记时
dd:用于复制
if:input file
/dev/zero:是个无显示的无限输入文件,永远无尽头,可以作为一个无限写入硬盘的文件
/var/test: 测试数据保存地方
of:output file
/dev/null: 是个无限空的文件可以理解为 windows 下的垃圾桶。
bs: 是每次读或写的大小,即一个块的大小
count: 是读写块的数量,相乘就是读写数据量大小,数据量(count)越大越准确,多次测试取
平均值。