作为IT工程师,掌握Linux系统性能监控和优化是必备技能。以下是一套全面的方法:
top/htop:实时查看系统进程和资源使用情况
top
htop # 更友好的交互式界面
vmstat:监控系统内存、进程、IO等
vmstat 1 # 每秒刷新一次
iostat:监控磁盘I/O性能
iostat -x 1
free:查看内存使用情况
free -m # 以MB为单位显示
df/du:磁盘空间监控
df -h # 查看磁盘使用情况
du -sh * # 查看当前目录各文件/文件夹大小
sar:系统活动报告工具(sysstat包)
sar -u 1 3 # CPU使用率,每秒1次共3次
sar -r # 内存使用情况
dstat:全能系统资源统计工具
dstat -cdngy 1
nmon:IBM开发的综合监控工具
nmon
netstat/ss:网络连接监控
netstat -tulnp
ss -s # 更现代的替代品
top
查看CPU负载mpstat -P ALL 1
查看各CPU核心使用率pidstat 1
查看进程CPU使用情况free -m
查看内存使用vmstat 1
关注si/so(交换分区活动)slabtop
查看内核slab缓存iostat -x 1
关注%util和awaitiotop
查看进程I/O使用情况dmesg | grep -i "error"
检查磁盘错误iftop
实时网络流量监控nethogs
按进程查看网络使用tcpdump
抓包分析编辑/etc/sysctl.conf
:
# 减少TCP连接TIME_WAIT状态
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
# 增加文件描述符限制
fs.file-max = 65535
# 内存相关优化
vm.swappiness = 10
vm.dirty_ratio = 60
vm.dirty_background_ratio = 10
应用修改:sysctl -p
使用deadline/noop调度器(SSD)
echo deadline > /sys/block/sda/queue/scheduler
调整预读值
blockdev --setra 256 /dev/sda
文件系统优化(ext4):
mount -o noatime,nodiratime,data=writeback /dev/sda1 /mountpoint
conf
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
systemctl
禁用不必要的服务/etc/security/limits.conf
)/var/log/
)通过以上工具和方法,您可以全面掌握Linux系统的性能状况并进行有效优化。