学习目标
- 理解本节涉及的核心主题:系统性能下降、检查系统负载,查看 CPU 和内存使用情况、优化进程优先级,释放不必要的资源、优化磁盘 I/O。
- 能够结合示例完成常见操作,并理解关键参数、使用场景与结果差异。
- 能够识别本节相关的常见风险、易错点或排查思路。
学习重点
- 主题范围:系统性能下降、检查系统负载,查看 CPU 和内存使用情况、优化进程优先级,释放不必要的资源、优化磁盘 I/O
- 学习重点:命令用途、关键参数、典型场景、与相近命令的区别
- 复习方式:先理解场景,再动手练习,最后对照结果检查
常见问题与解决方案
系统性能下降
系统性能下降可能由于资源过载、配置不当或硬件故障等多种原因导致。及时诊断和优化系统性能,是确保系统稳定运行的关键。
检查系统负载,查看 CPU 和内存使用情况
-
使用
top或htop监控实时资源使用
使用toptop示例输出:
top - 12:34:56 up 10 days, 3:45, 2 users, load average: 1.23, 0.98, 0.75 Tasks: 150 total, 1 running, 149 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.0 us, 3.0 sy, 0.0 ni, 90.0 id, 2.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 16384000 total, 2100000 free, 4200000 used, 10084000 buff/cache KiB Swap: 8388608 total, 8388608 free, 0 used. 10400000 avail Mem使用
htopsudo apt install htop htop示例输出:
说明:
htop提供了更友好的图形化界面,支持鼠标操作和自定义显示。
-
使用
vmstat查看内存与交换空间状态
vmstat命令提供了系统虚拟内存、进程、CPU 等的统计信息。vmstat 1 5示例输出:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 2147484 524288 8388608 0 0 0 0 45 78 5 2 93 0 0 1 0 0 2147484 524288 8388608 0 0 0 0 30 55 3 1 96 0 0 0 0 0 2147484 524288 8388608 0 0 0 0 50 100 4 2 94 0 0 1 0 0 2147484 524288 8388608 0 0 0 0 35 70 6 3 91 0 0 0 0 0 2147484 524288 8388608 0 0 0 0 40 80 5 2 93 0 0字段说明:
- procs
r:运行队列中的进程数。b:等待 I/O 的进程数。
- memory
swpd:已使用的交换空间(KB)。free:空闲内存(KB)。buff:缓冲区使用的内存(KB)。cache:缓存使用的内存(KB)。
- swap
si:从交换空间交换到内存的数据量(KB/s)。so:从内存交换到交换空间的数据量(KB/s)。
- io
bi:块设备读取数据量(块/s)。bo:块设备写入数据量(块/s)。
- system
in:每秒中断数。cs:每秒上下文切换数。
- cpu
us:用户空间占用的 CPU 百分比。sy:内核空间占用的 CPU 百分比。id:空闲 CPU 百分比。wa:等待 I/O 的 CPU 百分比。st:被虚拟机偷走的 CPU 百分比。 分析示例:
- 高
si和so表示交换活动频繁,可能是内存不足。 - 高
wa表示 I/O 等待时间长,可能是磁盘性能瓶颈。 - 高
r表示系统负载较高,可能需要优化进程或增加 CPU。
- procs
-
使用
sar收集历史性能数据
sar是sysstat包中的一个工具,用于收集和报告系统活动信息,包括 CPU、内存、磁盘和网络等。sudo apt install sysstat sar -u 1 5示例输出:
12:00:01 PM CPU %user %nice %system %iowait %steal %idle 12:00:02 PM all 5.00 0.00 3.00 0.50 0.00 91.50 12:00:03 PM all 4.50 0.00 2.50 0.30 0.00 92.70 12:00:04 PM all 6.00 0.00 4.00 0.60 0.00 89.40 12:00:05 PM all 3.50 0.00 1.50 0.20 0.00 94.80 12:00:06 PM all 5.50 0.00 3.50 0.40 0.00 90.60说明:
- 使用
sar可以分析系统在特定时间段内的性能变化,帮助识别性能趋势和异常。
- 使用
优化进程优先级,释放不必要的资源
当系统性能下降时,调整进程优先级和释放不必要的资源可以显著提升系统响应速度和整体性能。
-
使用
nice和renice调整进程优先级-
nice命令
用于启动新进程时设置其优先级,优先级值(niceness)范围从-20(最高优先级)到19(最低优先级),默认值为0。
示例:
启动一个进程,并设置优先级为10:nice -n 10 myapp说明:
- 较高的 niceness 值(如
10)会降低进程的 CPU 优先级,减少其对系统资源的占用。
- 较高的 niceness 值(如
-
renice命令
用于修改正在运行的进程的优先级。
示例:
将 PID 为1234的进程优先级调整为5:sudo renice -n 5 1234说明:
- 需要具有足够的权限(通常是超级用户)才能降低进程的优先级(设置为更高的 niceness 值)。
-
-
使用
top和htop查找高 CPU 使用进程-
启动
top或htoptop或
htop -
按
%CPU列排序
在top中,按P键按 CPU 使用率排序。
在htop中,按F6键,选择%CPU作为排序依据。 -
识别高 CPU 使用进程
查看顶部列出的进程,找出消耗大量 CPU 的应用程序或服务。
-
-
使用
kill终止不必要的进程
如果某些进程消耗过多资源且不必要,可以终止它们以释放系统资源。sudo kill -9 PID说明:
-9信号强制终止进程,确保其立即停止。- 警告:使用
kill -9可能导致数据丢失,建议优先尝试温和的终止信号(如kill PID或kill -15 PID)。
-
停止不必要的服务与守护进程
识别并停止不需要的系统服务,减少资源占用。sudo systemctl stop service_name sudo systemctl disable service_name示例:
停止并禁用 Bluetooth 服务:
sudo systemctl stop bluetooth sudo systemctl disable bluetooth -
清理系统缓存(
sync && sudo sysctl -w vm.drop_caches=3)
清理系统缓存可以释放内存资源,但通常不建议频繁执行,因为缓存有助于提高系统性能。sudo sync sudo sysctl -w vm.drop_caches=3说明:
sync:将所有挂起的写操作写入磁盘。vm.drop_caches=3:清理页缓存、目录项缓存和 inode 缓存。 注意事项:- 清理缓存后,系统性能可能暂时下降,因为需要重新加载被清理的缓存。
优化磁盘 I/O
磁盘 I/O 是影响系统性能的重要因素,优化磁盘 I/O 可以显著提升系统响应速度和吞吐量。
- 使用
iotop监控磁盘 I/O 活动
iotop是一个实时监控磁盘 I/O 使用情况的工具,类似于top,但专注于磁盘操作。-
安装
iotopsudo apt install iotop # Debian/Ubuntu sudo yum install iotop # CentOS/RHEL sudo dnf install iotop # Fedora -
启动
iotopsudo iotop示例输出:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1234 be/4 alice 0.00 B/s 0.00 B/s 0.00 % 0.00 % myapp 5678 be/4 bob 0.00 B/s 1.00 MB/s 0.00 % 0.00 % nginx -
说明:
- PID:进程 ID。
- PRIO:进程优先级。
- USER:进程所有者。
- DISK READ 和 DISK WRITE:进程的磁盘读取和写入速率。
- COMMAND:运行的命令。
-
- 优化磁盘 I/O
-
调整 I/O 调度器
Linux 提供多种 I/O 调度器,如cfq、deadline和noop,根据系统需求选择合适的调度器。
查看当前调度器cat /sys/block/sda/queue/scheduler示例输出:
noop deadline [cfq]切换 I/O 调度器
将调度器切换为
deadline:echo deadline | sudo tee /sys/block/sda/queue/scheduler -
使用
hdparm优化磁盘性能
hdparm可用于配置硬盘的性能参数,如启用 DMA、调整读写缓存。- 启用 DMA
sudo hdparm -d1 /dev/sda - 开启读缓存
sudo hdparm -W1 /dev/sda
- 启用 DMA
-
优化文件系统
文件系统的优化可以提升磁盘性能,常见的优化方法包括调整挂载选项和使用更高效的文件系统。- 调整挂载选项
在/etc/fstab文件中添加优化选项,如noatime、nodiratime,减少不必要的磁盘写入。
示例:/dev/sda1 /home ext4 defaults,noatime 0 2 - 选择高性能文件系统
根据需求选择合适的文件系统,如ext4、xfs、btrfs,优化磁盘性能和数据管理。
- 调整挂载选项
-
示例与应用场景
- 数据库服务器优化
调整 I/O 调度器为deadline,优化磁盘读写性能,提升数据库查询速度。 - Web 服务器高负载优化
通过iotop监控磁盘 I/O,识别并优化高 I/O 进程,确保 Web 服务的高性能和稳定性。
系统性能下降可能由于资源过载、配置不当或硬件故障等多种原因导致。及时诊断和优化系统性能,是确保系统稳定运行的关键。
检查系统负载,查看 CPU 和内存使用情况
-
使用
top或htop监控实时资源使用
使用toptop示例输出:
top - 12:34:56 up 10 days, 3:45, 2 users, load average: 1.23, 0.98, 0.75 Tasks: 150 total, 1 running, 149 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.0 us, 3.0 sy, 0.0 ni, 90.0 id, 2.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 16384000 total, 2100000 free, 4200000 used, 10084000 buff/cache KiB Swap: 8388608 total, 8388608 free, 0 used. 10400000 avail Mem使用
htopsudo apt install htop htop示例输出:
说明:
htop提供了更友好的图形化界面,支持鼠标操作和自定义显示。
-
使用
vmstat查看内存与交换空间状态
vmstat命令提供了系统虚拟内存、进程、I/O 和 CPU 的统计信息。vmstat 1 5示例输出:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 2147484 524288 8388608 0 0 0 0 45 78 5 2 93 0 0 1 0 0 2147484 524288 8388608 0 0 0 0 30 55 3 1 96 0 0 0 0 0 2147484 524288 8388608 0 0 0 0 50 100 4 2 94 0 0 1 0 0 2147484 524288 8388608 0 0 0 0 35 70 6 3 91 0 0 0 0 0 2147484 524288 8388608 0 0 0 0 40 80 5 2 93 0 0字段说明:
- procs
r:运行队列中的进程数。b:等待 I/O 的进程数。
- memory
swpd:已使用的交换空间(KB)。free:空闲内存(KB)。buff:缓冲区使用的内存(KB)。cache:缓存使用的内存(KB)。
- swap
si:从交换空间交换到内存的数据量(KB/s)。so:从内存交换到交换空间的数据量(KB/s)。
- io
bi:块设备读取数据量(块/s)。bo:块设备写入数据量(块/s)。
- system
in:每秒中断数。cs:每秒上下文切换数。
- cpu
us:用户空间占用的 CPU 百分比。sy:内核空间占用的 CPU 百分比。id:空闲 CPU 百分比。wa:等待 I/O 的 CPU 百分比。st:被虚拟机偷走的 CPU 百分比。 分析示例:
- 高
si和so表示交换活动频繁,可能是内存不足。 - 高
wa表示 I/O 等待时间长,可能是磁盘性能瓶颈。 - 高
r表示系统负载较高,可能需要优化进程或增加 CPU。
- procs
-
使用
sar收集历史性能数据
sar是sysstat包中的一个工具,用于收集和报告系统活动信息,包括 CPU、内存、磁盘和网络等。sudo apt install sysstat sar -u 1 5示例输出:
12:00:01 PM CPU %user %nice %system %iowait %steal %idle 12:00:02 PM all 5.00 0.00 3.00 0.50 0.00 91.50 12:00:03 PM all 4.50 0.00 2.50 0.30 0.00 92.70 12:00:04 PM all 6.00 0.00 4.00 0.60 0.00 89.40 12:00:05 PM all 3.50 0.00 1.50 0.20 0.00 94.80 12:00:06 PM all 5.50 0.00 3.50 0.40 0.00 90.60说明:
- 使用
sar可以分析系统在特定时间段内的性能变化,帮助识别性能趋势和异常。
- 使用
优化进程优先级,释放不必要的资源
当系统性能下降时,调整进程优先级和释放不必要的资源可以显著提升系统响应速度和整体性能。
-
使用
nice和renice调整进程优先级-
nice命令
nice用于启动新进程时设置其优先级,优先级值(niceness)范围从-20(最高优先级)到19(最低优先级),默认值为0。
示例:
启动一个进程,并设置优先级为10:nice -n 10 myapp说明:
- 较高的 niceness 值(如
10)会降低进程的 CPU 优先级,减少其对系统资源的占用。
- 较高的 niceness 值(如
-
renice命令
renice用于修改正在运行的进程的优先级。
示例:
将 PID 为1234的进程优先级调整为5:sudo renice -n 5 1234说明:
- 需要具有足够的权限(通常是超级用户)才能降低进程的优先级(设置为更高的 niceness 值)。
-
-
使用
top和htop查找高 CPU 使用进程-
启动
top或htoptop或
htop -
按
%CPU列排序
在top中,按P键按 CPU 使用率排序。
在htop中,按F6键,选择%CPU作为排序依据。 -
识别高 CPU 使用进程
查看顶部列出的进程,找出消耗大量 CPU 的应用程序或服务。
-
-
使用
kill终止不必要的进程
如果某些进程消耗过多资源且不必要,可以终止它们以释放系统资源。sudo kill -9 PID说明:
-9信号强制终止进程,确保其立即停止。- 警告:使用
kill -9可能导致数据丢失,建议优先尝试温和的终止信号(如kill PID或kill -15 PID)。
-
停止不必要的服务与守护进程
识别并停止不需要的系统服务,减少资源占用。sudo systemctl stop service_name sudo systemctl disable service_name示例:
停止并禁用 Bluetooth 服务:
sudo systemctl stop bluetooth sudo systemctl disable bluetooth -
清理系统缓存(
sync && sudo sysctl -w vm.drop_caches=3)
清理系统缓存可以释放内存资源,但通常不建议频繁执行,因为缓存有助于提高系统性能。sudo sync sudo sysctl -w vm.drop_caches=3说明:
sync:将所有挂起的写操作写入磁盘。vm.drop_caches=3:清理页缓存、目录项缓存和 inode 缓存。 注意事项:- 清理缓存后,系统性能可能暂时下降,因为需要重新加载被清理的缓存。
优化磁盘 I/O
磁盘 I/O 是影响系统性能的重要因素,优化磁盘 I/O 可以显著提升系统响应速度和吞吐量。
- 使用
iotop监控磁盘 I/O 活动
iotop是一个实时监控磁盘 I/O 使用情况的工具,类似于top,但专注于磁盘操作。-
安装
iotopsudo apt install iotop # Debian/Ubuntu sudo yum install iotop # CentOS/RHEL sudo dnf install iotop # Fedora -
启动
iotopsudo iotop示例输出:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1234 be/4 alice 0.00 B/s 0.00 B/s 0.00 % 0.00 % myapp 5678 be/4 bob 0.00 B/s 1.00 MB/s 0.00 % 0.00 % nginx -
说明:
- PID:进程 ID。
- PRIO:进程优先级。
- USER:进程所有者。
- DISK READ 和 DISK WRITE:进程的磁盘读取和写入速率。
- COMMAND:运行的命令。
-
- 优化磁盘 I/O
-
调整 I/O 调度器
Linux 提供多种 I/O 调度器,如cfq、deadline和noop,根据系统需求选择合适的调度器。
查看当前调度器cat /sys/block/sda/queue/scheduler示例输出:
noop deadline [cfq]切换 I/O 调度器
将调度器切换为
deadline:echo deadline | sudo tee /sys/block/sda/queue/scheduler -
使用
hdparm优化磁盘性能
hdparm可用于配置硬盘的性能参数,如启用 DMA、调整读写缓存。- 启用 DMA
sudo hdparm -d1 /dev/sda - 开启读缓存
sudo hdparm -W1 /dev/sda
- 启用 DMA
-
优化文件系统
文件系统的优化可以提升磁盘性能,常见的优化方法包括调整挂载选项和使用更高效的文件系统。- 调整挂载选项
在/etc/fstab文件中添加优化选项,如noatime、nodiratime,减少不必要的磁盘写入。
示例:/dev/sda1 /home ext4 defaults,noatime 0 2 - 选择高性能文件系统
根据需求选择合适的文件系统,如ext4、xfs、btrfs,优化磁盘性能和数据管理。
- 调整挂载选项
-
示例与应用场景
-
数据库服务器优化
调整 I/O 调度器为deadline,优化磁盘读写性能,提升数据库查询速度。echo deadline | sudo tee /sys/block/sda/queue/scheduler -
Web 服务器高负载优化
通过iotop监控磁盘 I/O,识别并优化高 I/O 进程,确保 Web 服务的高性能和稳定性。sudo iotop示例:
如果发现
nginx进程正在进行大量磁盘写入操作,可以优化其日志配置,减少磁盘 I/O:http { access_log /var/log/nginx/access.log main buffer=16k flush=1m; error_log /var/log/nginx/error.log warn; ... }
本节总结
- 本节主要围绕 系统性能下降、检查系统负载,查看 CPU 和内存使用情况、优化进程优先级,释放不必要的资源、优化磁盘 I/O 展开。
- 学习时应优先抓住「命令解决什么问题、在什么场景下使用、执行后会产生什么结果」。
- 对涉及权限、覆盖、网络、系统服务、删除或安全配置的操作,建议先在测试环境练习。
复习建议
- 先用自己的话复述本节每个主题或命令的作用,避免只记参数不懂用途。
- 按原文示例至少手敲一遍典型命令,并观察输出变化。
- 对高风险操作先确认路径、权限和目标对象,再执行实际命令。