找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3841

积分

0

好友

531

主题
发表于 1 小时前 | 查看: 4| 回复: 0

在 Linux 系统管理的日常工作中,你是否曾经被系统运行缓慢、资源占用过高或者难以定位的性能瓶颈所困扰?掌握系统的监控与性能调优技能,不仅能保障服务的稳定运行,更是提升运维效率的关键。本文将带你快速上手,通过一系列实用的命令行工具,学会如何监控系统核心资源、管理进程并进行针对性的性能优化。

1. 系统资源监控

准确监控是性能优化的第一步。你需要清楚地知道 CPU、内存、磁盘和网络都在“忙”些什么。

1.1 CPU监控

top命令监控
这是最经典的实时监控工具。

# 实时监控CPU使用
top

# 按CPU使用率排序
top -o cpu

# 设置刷新间隔
top -d 5

vmstat命令
它提供了更丰富的系统整体资源统计信息。

# 查看系统资源使用
vmstat 1

# 查看CPU详细信息
vmstat -c 1

htop命令
它是 top 的增强版,提供了颜色高亮和更方便的交互操作。

# 交互式监控
htop

# 按CPU排序
F6 → CPU

1.2 内存监控

free命令
快速查看内存和交换空间的使用概况。

# 查看内存使用
free -h

# 查看内存详细信息
free -m

# 查看内存使用趋势
watch free -h

内存分析
深入内核接口查看更详细的内存信息。

# 查看内存使用情况
cat /proc/meminfo

# 查看内存映射
cat /proc/PID/maps

1.3 磁盘I/O监控

iostat命令
专门用于监控磁盘I/O性能,对于排查存储瓶颈非常有用。

# 查看磁盘I/O使用
iostat -xz 1

# 查看磁盘详细信息
iostat -d -x -k 1

df命令
检查文件系统的磁盘空间使用情况。

# 查看磁盘使用
df -h

# 查看inode使用
df -i

1.4 网络监控

netstat命令
传统的网络连接、路由表等查看工具。

# 查看网络连接
netstat -an

# 查看监听端口
netstat -ln

# 查看进程ID
netstat -p

ss命令
更现代、更快速的 socket 统计工具,是 netstat 的优秀替代品。

# 查看网络连接
ss -tulpn

# 查看TCP连接
ss -t

在复杂的 网络/系统 环境中,熟练使用 ssnetstat 能帮助你快速定位连接异常和端口占用问题。

2. 进程监控

系统资源被谁占用了?通过进程监控,我们可以找到“罪魁祸首”并管理它。

2.1 进程查看

ps命令
功能强大的进程状态查看工具,参数组合多样。

# 查看当前进程
ps

# 查看所有进程
ps -ef

# 查看进程详细信息
ps -aux

pgrep命令
根据进程名快速查找其 PID。

# 查找进程
pgrep nginx

# 查找进程并显示PID
pgrep -l nginx

pstree命令
以树状图形式展示进程关系,直观明了。

# 查看进程树
pstree

# 显示PID
pstree -p

2.2 进程控制

kill命令
向进程发送信号,最常用于终止进程。

# 终止进程
kill PID

# 强制终止进程
kill -9 PID

# 终止所有同名进程
killall nginx

nice命令
调整进程的调度优先级(nice值)。

# 调整进程优先级
nice -n -5 command

# 修改已运行进程的优先级
renice -n 10 PID

2.3 进程调度

screen命令
终端复用器,可以创建持久的会话,防止进程因 SSH 断开而终止。

# 创建新会话
screen -S session_name

# 查看所有会话
screen -ls

# 恢复会话
screen -r session_name

tmux命令
比 screen 功能更强大的终端复用器,支持分屏和更丰富的配置。

# 创建新会话
tmux new -s session_name

# 查看所有会话
tmux ls

# 附加会话
tmux attach -t session_name

3. 性能优化

在完成监控和诊断之后,我们就可以针对性地进行调优了。

3.1 CPU优化

CPU调度优化
通过调整内核调度器参数来优化 I/O 密集型或计算密集型任务的性能。

# 查看CPU调度策略
cat /sys/block/sda/queue/scheduler

# 调整CPU调度策略
echo "deadline" > /sys/block/sda/queue/scheduler

# 调整CPU频率
cpufreq-set -g performance

# 调整CPU亲和性
taskset -c 0-3 command

进程优先级调整
为关键进程分配更高的优先级,确保其获得足够的计算资源。

# 查看进程优先级
ps -eo pid,ppid,cmd,pri,ni

# 调整进程优先级
renice -n -10 PID

# 设置实时优先级
chrt -f 50 PID

3.2 内存优化

内存参数调优
调整虚拟内存(swap)行为、缓存压力等内核参数。

# 调整内存使用策略
echo “1” > /proc/sys/vm/swappiness

# 调整内存缓存
echo “50” > /proc/sys/vm/vfs_cache_pressure

# 调整内存分配策略
echo “0” > /proc/sys/vm/overcommit_memory

内存限制设置
防止单个进程消耗过多内存,影响系统整体稳定性。

# 设置内存限制
ulimit -v 1048576  # 限制为1GB

# 设置进程内存限制
prlimit --as=1073741824 command

3.3 磁盘I/O优化

磁盘参数调优
优化块设备的队列和预读设置,提升磁盘吞吐量。

# 调整磁盘队列长度
echo “512” > /sys/block/sda/queue/nr_requests

# 调整预读大小
echo “8192” > /sys/block/sda/queue/read_ahead_kb

# 调整调度策略
echo “noop” > /sys/block/sda/queue/scheduler

文件系统优化
通过挂载选项调整文件系统的行为,例如减少元数据更新开销。

# 调整挂载选项
mount -o noatime,nodiratime /dev/sda1 /mnt

# 启用延迟写入
mount -o data=writeback /dev/sda1 /mnt

# 启用压缩
mount -o compress /dev/sda1 /mnt

3.4 网络优化

网络参数调优
调整 TCP/IP 协议栈参数以适应高并发、高吞吐量的网络场景。

# 调整TCP窗口大小
echo “net.core.rmem_max = 16777216” >> /etc/sysctl.conf
echo “net.core.wmem_max = 16777216” >> /etc/sysctl.conf

# 调整TCP缓冲区
echo “net.ipv4.tcp_rmem = 4096 87380 16777216” >> /etc/sysctl.conf
echo “net.ipv4.tcp_wmem = 4096 65536 16777216” >> /etc/sysctl.conf

# 调整TCP连接数
echo “net.core.somaxconn = 65535” >> /etc/sysctl.conf

# 应用配置
sysctl -p

网络接口优化
直接针对物理网卡进行配置,如调整 MTU、队列长度等。

# 调整MTU
ifconfig eth0 mtu 9000

# 调整网卡队列长度
ethtool -G eth0 rx 4096 tx 4096

# 启用网卡多队列
ethtool -L eth0 combined 8

本文介绍的命令和技巧是 Linux 运维 & 测试 工程师工具箱中的基础且重要的一部分。从监控到优化,是一个持续的闭环过程。真正的掌握源于实践,建议在你的测试环境中多操作、多观察。如果你对这些系统层面的技术细节有更多兴趣,欢迎到云栈社区与其他开发者交流探讨。




上一篇:开源AI Agent编排平台Paperclip:三天斩获12.8k星,像管理公司一样运作你的AI团队
下一篇:深入LLM推理:基于llama.cpp源码解析大语言模型工作原理
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-10 21:52 , Processed in 0.709838 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表