Linux服务器性能调优实战:CPU调度、内存与网络参数配置

Linux服务器在高并发场景下出现性能问题,多数情况下不是机器不够,而是默认内核参数和运行配置没有针对业务调整。Linux服务器性能调优的核心思路是先定位瓶颈再改参数,本文按CPU、内存、网络三个层面给出常用参数配置、验证方法和落地建议,适合线上Linux系统的日常运维优化。

一、先用工具定位瓶颈:CPU、内存、磁盘、网络

调参之前先看负载在哪一层。一组基础命令组合:

vmstat 2 5        # 观察runnable进程、si/so、us/sy占比
pidstat -u 2 3    # 定位CPU占用高的进程
free -h           # 内存与Swap使用
iostat -x 2 3     # 磁盘util与await
ss -s             # 连接数概览
sar -n DEV 2 3    # 网卡吞吐

判断口径:CPU核数少而runnable队列长期大于核数,是CPU瓶颈;swap持续读写是内存瓶颈;await高、util 100%是磁盘瓶颈;连接数堆积、丢包是网络瓶颈。

二、CPU层优化:进程优先级与绑定

高并发服务(数据库、Redis、网关)建议关闭内核自动迁移带来的抖动,用taskset把关键进程绑定到固定CPU核;次要任务用nice/renice调低优先级。实时业务用CFS组调度或cgroup限额,避免批处理任务抢占主业务CPU。

taskset -pc 0-3 PID        # 查看/设置进程CPU亲和性
renice -n -5 -p PID       # 提高优先级(root)
# 内核层配置
kernel.sched_autogroup_enabled = 0

三、内存与Swap调优

Linux默认swap倾向保守,但数据库类应用需要避免swap抖动。三个常用参数:

vm.swappiness = 10        # 默认60,降到10以下减少swap使用
vm.vfs_cache_pressure = 50 # 保留更多目录项缓存
vm.dirty_ratio = 20        # 脏页刷盘水位
vm.dirty_background_ratio = 5

注意:swappiness降到0会强制swap-off,内存瞬时压力会触发OOM,生产环境建议保持5~30。另外,数据库类服务建议关闭Transparent Huge Pages(THP),避免内存分配抖动:

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

四、网络栈参数调优

高并发连接场景下,主要调这几个参数,都在/etc/sysctl.conf里配置:

net.core.somaxconn = 65535          # listen队列上限
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30       # 快速回收TIME_WAIT
net.ipv4.tcp_tw_reuse = 1           # 复用TIME_WAIT连接
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 65536 4194304

TIME_WAIT多不代表有问题,如果端口耗尽(/proc/sys/net/ipv4/ip_local_port_range不足)才需要调tcp_tw_reuse或缩短时间。不要盲目把所有参数都往大调,内存会先扛不住。

五、参数持久化与生效验证

sysctl命令临时生效,重启丢失;写入/etc/sysctl.conf后用sysctl -p加载,或者放/etc/sysctl.d/下的独立文件便于管理。改完用sysctl -a检查生效,并配合top、vmstat观察前后对比,指标没变化说明改错了参数。

六、Linux服务器调优顺序建议

按这个顺序排查:先看应用层(连接池、线程数、慢查询),再动系统层(CPU亲和、sysctl、THP),最后考虑架构层(加机器、拆服务)。系统层参数一次只改1-2个,记录改动和时间,方便回滚。性能问题绝大多数先出在业务代码上,调参只是辅助手段。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-xing-neng-diao-you-shi-zhan-cpu-diao-du-nei/

(0)
小编小编
上一篇 10小时前
下一篇 10小时前

相关推荐