服务覆盖:昆明·曲靖·玉溪·保山·昭通·丽江·普洱·临沧·楚雄·红河·文山·西双版纳·大理·德宏·怒江·迪庆

查看当前会话限制

eycit 2026-04-20 -2 次阅读 系统安装
---

theme: default themeName: "默认主题" title: "服务器越用越卡?Linux内核参数这样调,性能瞬间提升30%"


前言

很多服务器跑着用着就变慢了,SSH登录卡顿、请求响应延迟增加、各项监控指标看起来还行但就是不得劲。这种"亚健康"状态,很可能是内核参数没调好。Linux内核默认参数偏保守,是为了兼容性设计的,不太适合高并发生产环境。今天就给你一份实战型的内核参数优化清单,照着改,机器性能提升一个量级不是梦。

文件描述符优化

Linux对每个进程打开的文件数有限制,默认1024。web服务、数据库这种高并发应用,一不小心就爆了。

查看当前限制
# 查看当前会话限制

ulimit -n

查看系统级限制

cat /proc/sys/fs/file-max

生产环境推荐配置
# 临时生效

sysctl -w fs.file-max=655360

永久生效,编辑 /etc/sysctl.conf

fs.file-max = 655360

进程级限制也要改:

# /etc/security/limits.conf

* soft nofile 655360 * hard nofile 655360 * soft nproc 655360 * hard nproc 655360

改完需要重新登录才生效,或者用`ulimit -n 655360`临时调大。

网络参数优化

高并发服务器,网络参数是重点优化对象。

TCP连接相关
# 允许更多TCP连接

sysctl -w net.core.somaxconn=65535

TCP连接队列长度(配合somaxconn使用)

sysctl -w net.core.netdev_max_backlog=65535

TIME_WAIT连接复用

sysctl -w net.ipv4.tcp_tw_reuse=1

缩短TIME_WAIT时间(谨慎使用)

sysctl -w net.ipv4.tcp_fin_timeout=15

开启TCP快速回收

sysctl -w net.ipv4.tcp_tw_recycle=1

TCP Keepalive优化

sysctl -w net.ipv4.tcp_keepalive_time=600 sysctl -w net.ipv4.tcp_keepalive_intvl=60 sysctl -w net.ipv4.tcp_keepalive_probes=3

UDP优化(如果用了UDP协议):
# UDP缓冲区大小

sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216 sysctl -w net.ipv4.udp_rmem_min=8192 sysctl -w net.ipv4.udp_wmem_min=8192

网络内存优化
# TCP内存自动调优范围

sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216" sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"

整个网络栈内存上限

sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216

内存管理优化

Swappiness调整
# 查看当前值(默认60)

cat /proc/sys/vm/swappiness

设为10,内存够用尽量少用swap

sysctl -w vm.swappiness=10

永久生效

echo "vm.swappiness=10" >> /etc/sysctl.conf

注意:某些数据库(如Redis)明确要求swappiness=0,这个要结合业务来调。

脏页刷新策略
# 内存中脏页比例超过这个值就触发刷盘

sysctl -w vm.dirty_ratio=15

内存中脏页比例超过这个值就阻塞写操作

sysctl -w vm.dirty_background_ratio=5

超过这个时间未flush的脏页会被强制刷盘

sysctl -w vm.dirty_expire_centisecs=3000 sysctl -w vm.dirty_writeback_centisecs=500

大页内存(针对Oracle等大型数据库):
# 关闭透明大页(很多应用推荐关闭)

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

进程调度优化

CPU调度策略
# 启动时不执行IO预读(SSD不需要)

echo 0 > /sys/block/sda/queue/read_ahead_kb

提升IO响应(SSD建议设为deadline)

echo "deadline" > /sys/block/sda/queue/scheduler

关闭NOVA文件系统的预读取

echo 0 > /sys/kernel/mm/zram/0/read_ahead_kb

进程资源限制
# 最大内存映射区域

sysctl -w vm.max_map_count=262144

线程数限制

sysctl -w kernel.threads-max=65535

一次性优化脚本

把所有参数整理成一个脚本,生产环境直接执行:

#!/bin/bash

Linux系统内核优化脚本

文件描述符

echo "优化文件描述符..." echo "* soft nofile 655360" >> /etc/security/limits.conf echo "* hard nofile 655360" >> /etc/security/limits.conf echo "fs.file-max = 655360" >> /etc/sysctl.conf

网络参数

echo "优化网络参数..." cat >> /etc/sysctl.conf << EOF net.core.somaxconn = 65535 net.core.netdev_max_backlog = 65535 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_intvl = 60 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 EOF

内存参数

echo "优化内存参数..." echo "vm.swappiness = 10" >> /etc/sysctl.conf echo "vm.dirty_ratio = 15" >> /etc/sysctl.conf echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.conf

生效

sysctl -p echo "优化完成!"

不同业务的参数建议

Web服务器(Nginx/Apache)

  • 重点:somaxconn、file-max、tcp_tw_reuse
  • 并发连接数是瓶颈

数据库(MySQL/PostgreSQL)

  • 重点:swappiness、max_map_count、tcp_rmem/tcp_wmem
  • 内存和连接是瓶颈

Redis/Memcached

  • 重点:vm.swappiness=0、file-max
  • 网络IO是瓶颈

消息队列(Kafka/RabbitMQ)

  • 重点:netdev_max_backlog、file-max、tcp_tw_reuse
  • 网络和磁盘IO是瓶颈

注意事项

1. 先测试再上线:生产环境改动内核参数有风险,先在测试环境验证 2. 记录原始值:改之前`sysctl -a > /tmp/original_sysctl.txt`备份 3. 观察效果:改完用`sysctl -a`确认生效,用监控观察性能变化 4. 部分参数需要重启:比如file-max这种,修改后可能需要reboot

结语

内核参数优化不是玄学,是有据可依的系统调优。上面这些参数都是经过大量生产环境验证的,改完性能提升30%不是吹牛。不过也提醒一句:优化之前先备份,监控要做好,改完观察几天稳不稳。参数不是越大越好,找到业务的平衡点才是真·优化。


看完还有什么疑问吗?

如果文章没有覆盖到你的情况,欢迎联系我们咨询——免费解答,说清楚再决定要不要服务。

📞 服务热线:13708730161 💬 微信:eyc1689 📧 邮箱:service@eycit.com 🌐 https://www.eycit.com

易云城IT服务,您身边的IT专家。

上一篇
查看当前容器日志...
下一篇
查看当前电源计划...