9.Linux 调优与性能检测
Linux : 调优与性能检测
一、影响 Linux 服务器性能的主要因素
- CPU
- Memory (内存)
- 磁盘 I/O
- 网络
二、性能检测工具
1. CPU 性能检测
- 查看 CPU 信息:
cat /proc/cpuinfo
lscpu
- 查看系统平均负载 (Load Average):
uptime
- 显示系统在 1 分钟、5 分钟、15 分钟内的平均负载情况。
- 查看系统整体状态 (CPU, 内存, I/O, 进程等):
vmstat
(常用选项如vmstat 1
每秒刷新一次)- 输出字段解读:
procs
(进程):r
: 等待运行的进程数。b
: 处于不可中断休眠状态(通常是在等待 I/O)的进程数。
memory
(内存,单位 KB/MB):swpd
: 已使用的虚拟内存大小。free
: 空闲的物理内存大小。buff
: 用作缓冲的内存大小。cache
: 用作缓存的内存大小。
swap
(交换分区):si
: 每秒从磁盘交换到内存的数据量 (Swap In)。so
: 每秒从内存交换到磁盘的数据量 (Swap Out)。si/so
长期大于 0 表示内存不足。
io
(块设备 I/O,单位 块/秒):bi
: 每秒从块设备接收的块数 (Blocks In,读操作)。bo
: 每秒发送到块设备的块数 (Blocks Out,写操作)。
system
(系统):in
: 每秒的中断数 (包括时钟中断)。cs
: 每秒的上下文切换次数 (Context Switch)。
cpu
(CPU 使用率百分比):us
: 用户进程消耗的 CPU 时间 (user time
)。sy
: 内核进程消耗的 CPU 时间 (system time
)。id
: CPU 空闲时间 (idle time
)。wa
: 等待 I/O 操作完成的 CPU 时间 (I/O wait time
)。高值通常表示 I/O 瓶颈。st
: 虚拟机等待物理 CPU 资源的时间 (steal time
)。在虚拟化环境中,如果此值较高,表示物理 CPU 资源紧张。
2. 内存 (Memory) 性能检测
- 动态查看进程和系统资源使用:
top
(按M
按内存排序,按P
按 CPU 排序,按q
退出)
- 查看内存使用概况:
free -m
(以 MB 为单位显示)free -h
(以人类可读格式显示,如 G, M)
3. 磁盘 I/O 性能检测
- 安装工具:
yum install sysstat
(CentOS/RHEL) 或apt install sysstat
(Debian/Ubuntu) - 查看磁盘 I/O 统计:
iostat -d
(显示磁盘报告)iostat -dx 1
(每秒刷新一次,显示扩展统计信息)
- 关键输出字段解读 (iostat -d):
tps
: 每秒发送到设备的 I/O 请求数 (Transfers Per Second)。kB_read/s
: 每秒从设备读取的数据量 (KB)。kB_wrtn/s
: 每秒写入设备的数据量 (KB)。kB_read
: 读取的总数据量 (KB)。kB_wrtn
: 写入的总数据量 (KB)。
4. 网络性能检测
- 测试网络连通性与延迟:
ping <目标主机或IP>
- 查看网络连接、监听端口和统计信息:
ss -tnl
(查看所有 TCP 监听端口) - 推荐使用,比 netstat 更高效。netstat -tulnp
(查看 TCP/UDP 监听端口及关联进程 PID/名称) - 传统命令。
三、系统性能调优 (tuned)
tuned
是一个系统调优守护进程,提供预定义配置文件和动态调优能力。
- 配置文件类型:
- 静态调优: 在服务启动或选择新配置文件时应用设置。
- 动态调优:
tuned
守护进程监视系统活动,并根据运行时行为动态调整设置。
- 常用预定义配置文件 (tuned-adm list):
balanced
: 节能与性能的平衡(默认配置,适合大多数场景)。desktop
: 基于balanced
,优化交互式应用响应速度。throughput-performance
: 最大化系统吞吐量(牺牲部分节能)。latency-performance
: 最大化系统响应速度,降低延迟(牺牲节能)。network-latency
: 基于latency-performance
,增加网络低延迟优化。network-throughput
: 基于throughput-performance
,增加网络吞吐量优化。powersave
: 最大化节能(可能牺牲性能)。virtual-guest
: 优化在虚拟机内运行的操作系统性能。virtual-host
: 优化作为虚拟机宿主机(Hypervisor)的系统性能。
- tuned-adm 管理命令:
tuned-adm active
: 查看当前活动的调优配置文件。tuned-adm list
: 列出所有可用调优配置文件及其描述。tuned-adm profile <profile_name>
: 切换到指定的调优配置文件 (如tuned-adm profile throughput-performance
)。tuned-adm recommend
: 显示系统推荐的默认调优配置文件。tuned-adm off
: 关闭tuned
调优,恢复系统默认设置。
四、进程优先级管理 (nice 和 renice)
Linux 进程调度器使用 nice
值调整进程的 CPU 时间分配优先级。
- nice 值范围:
-20
(最高优先级) 到19
(最低优先级)。 - 默认值: 进程通常继承父进程的
nice
值,默认为0
。 - 规则:
nice
值越高,优先级越低(更愿意让出 CPU)。nice
值越低,优先级越高(更倾向于占用 CPU)。- 普通用户: 只能降低自己进程的优先级(提高
nice
值),不能提高优先级(降低nice
值)或修改其他用户的进程。 - root 用户: 可以任意提高或降低任何进程的优先级。
- 管理命令:
- 查看进程优先级:
ps axo pid,comm,nice --sort=-nice
(按nice
值降序排列,高优先级在前)ps axo pid,comm,nice --sort=nice
(按nice
值升序排列,低优先级在前)ps -o pid,comm,nice <PID>
(查看指定进程的优先级)
- 启动时设置优先级:
nice -n <nice_value> <command>
(如nice -n 10 sha1sum /dev/zero &
) - 修改运行中进程的优先级:
renice -n <new_nice_value> <PID>
(如renice -n 19 1234
)
- 查看进程优先级:
五、Linux 内核优化
-
升级内核:
rpm -ivh kernel-<version>.<arch>.rpm
(安装新内核 RPM 包)- 重要提示: 升级内核后需要重启系统 (
reboot
) 生效。
-
内核模块管理:
- 模块存放目录:
/lib/modules/$(uname -r)/
- 查看当前内核版本:
uname -r
(输出如3.10.0-957.el7.x86_64
)- 版本号组成:
3
: 主版本号 (Major Version)10
: 次版本号 (Minor Version) - 偶数为稳定版 (Stable),奇数为开发版 (Development)0
: 修订版本号 (Revision Level)957
: 特定于发行版(如 RHEL/CentOS)的补丁号/编译号el7
: Enterprise Linux 7 (发行版标识)x86_64
: 硬件平台架构
- 版本号组成:
- 查询已加载模块:
lsmod
- 查看模块详细信息:
modinfo <module_name>
(如modinfo xfs
) - 加载模块:
modprobe <module_name>
(如modprobe ext4
) - 卸载模块:
modprobe -r <module_name>
(如modprobe -r ext4
)
- 模块存放目录:
-
内核参数优化 (/etc/sysctl.conf):
-
启用 IP 转发 (如路由器/网关):
# 编辑配置文件 vim /etc/sysctl.conf # 添加或修改以下行 net.ipv4.ip_forward = 1 # 应用更改 sysctl -p /etc/sysctl.conf
-
开启禁 Ping (忽略所有 ICMP Echo 请求):
# 编辑配置文件 vim /etc/sysctl.conf # 添加或修改以下行 net.ipv4.icmp_echo_ignore_all = 1 # 值 1 表示忽略,0 表示响应 # 应用更改 sysctl -p /etc/sysctl.conf
-
其他优化: 可根据需要调整
sysctl.conf
中的大量参数(如 TCP 缓冲区大小、连接跟踪、文件句柄数等)。修改后务必执行sysctl -p
使配置生效。
-