系统的性能优化

发布于:2025-06-19 ⋅ 阅读:(10) ⋅ 点赞:(0)

核心原则

监控先行:先分析瓶颈,再针对性优化

逐步调整:避免一次性修改过多参数。

稳定性优先:优化后需充分测试。

性能监控工具

top/htop: 实时查看cpu占用、MEM占用、LOAD AVERAGE系统负载

vmstat:r:等待CPU的进程数 >CPU表示过载

                si/so:Swap交换频率,频繁交换说明内存不足

iostat        查看磁盘I/O性能

netstat/ss        查看tcp连接数

sar -u 1 3 查看CPU使用率,每秒一次共三次

sar -r  查看内存使用历史

dstat  -cmsn 综合监控CPU、内存、网络、磁盘

CPU优化

调整进程优先级

nice -n 19 ./script.sh   # 启动低优先级进程
renice 19 -p PID         # 修改运行中进程的优先级

绑定CPU核心(减少上下文切换)

taskset -c 0,1 ./program  # 绑定到CPU0和CPU1

内核参数调整

kernel.sched_child_runs_first = 1  # 子进程优先调度

内存优化

调整Swap使用策略

# 修改/etc/sysctl.conf
vm.swappiness = 10        # 降低Swap使用倾向(0-100,默认60)
vm.vfs_cache_pressure = 50 # 减少inode缓存回收频率

禁用透明大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled

磁盘I/O优化

# 查看当前调度器
cat /sys/block/sda/queue/scheduler
# 临时修改为deadline调度器(适用于SSD)
echo deadline > /sys/block/sda/queue/scheduler

优化文件系统
# 挂载参数:noatime(不记录访问时间), data=writeback
UUID=xxx / ext4 defaults,noatime,data=writeback 0 1

网络优化

TCP参数调优

net.core.somaxconn = 4096       # 提高连接队列长度
net.ipv4.tcp_fin_timeout = 30   # 缩短TIME_WAIT超时
net.ipv4.tcp_tw_reuse = 1       # 允许重用TIME_WAIT连接

限制连接数

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 -j DROP

资源限制优化

ulimit

修改用户级限制

# 编辑/etc/security/limits.conf
* soft nofile 65535    # 文件描述符软限制
* hard nofile 65535    # 硬限制

cgroups(控制组)

限制进程资源

# 创建cgroup(需安装cgroup-tools)
cgcreate -g cpu,memory:/my_group
# 限制CPU使用为50%
cgset -r cpu.cfs_period_us=100000 -r cpu.cfs_quota_us=50000 my_group
# 限制内存为1GB
cgset -r memory.limit_in_bytes=1G my_group
# 将进程加入cgroup
cgexec -g cpu,memory:my_group ./program

安全与注意事项

备份配置文件:修改前备份 /etc/sysctl.conf/etc/security/limits.conf

灰度测试:先在测试环境验证参数调整效果。

避免过度优化:如无明确瓶颈,优先使用默认配置。

优化配置原则

精准定位瓶颈

使用 perf top 分析CPU热点。

通过 dmesg 检查内核OOM或I/O错误日志。

层级化调整

层级 工具/方法
应用层 代码优化、连接池配置
运行时 JVM参数、Golang GC策略
操作系统 sysctl、cgroups、ulimit
硬件/驱动 升级SSD、调整RAID级别

自动化监控

# 使用Prometheus + Grafana监控模板
- node_exporter 采集系统指标  
- alertmanager 配置CPU/内存阈值告警  

常用命令速查表

命令 作用
sar -u 1 3 查看CPU使用率
vmstat 1 监控内存和进程队列
iostat -xz 1 分析磁盘I/O瓶颈
ss -s 统计TCP连接状态

网站公告

今日签到

点亮在社区的每一天
去签到