Linux内核参数详细说明

针对Linux内核参数调优,增加补充的详细说明,便于大家更好的理解

1. 调整文件描述符限制

# 临时生效
ulimit -n 65534

# 永久生效,编辑 /etc/security/limits.conf
* soft nofile 65534
* hard nofile 65534

说明

  • ulimit -n:设置当前会话的最大文件描述符数。
  • nofile:指定每个用户进程的最大文件描述符数。

好处
增加文件描述符限制有助于服务器在高并发连接情况下保持稳定,避免“too many open files”错误。

2. TCP参数调优

# 编辑 /etc/sysctl.conf
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

说明及好处

  • net.core.somaxconn:设置listen()调用中指定的挂起连接队列的最大长度。增大该值可以增加高并发下的连接处理能力。
  • net.core.netdev_max_backlog:当内核收到数据包的速度比处理速度快时,允许的最大队列长度。增大该值可以减少丢包。
  • net.ipv4.tcp_max_syn_backlog:TCP三次握手未完成队列的最大长度。增加该值可以应对更多的SYN请求。
  • net.ipv4.tcp_fin_timeout:设置TCP连接在FIN-WAIT-2状态下的超时时间。减小该值可以更快释放资源。
  • net.ipv4.tcp_tw_reuse:允许TIME-WAIT套接字被重新用于新的TCP连接。可以提高连接重用率。
  • net.ipv4.tcp_tw_recycle:加速TIME-WAIT sockets的回收。可以提高连接重用率。
  • net.ipv4.tcp_syncookies:防止SYN洪水攻击。当打开时,系统可以应对更多的SYN请求。
  • net.ipv4.ip_local_port_range:指定用于外部连接的本地端口范围。扩大范围可以减少端口耗尽的可能性。
  • net.ipv4.tcp_window_scaling:开启TCP窗口自动调节功能。提高传输速度。
  • net.ipv4.tcp_rmem:定义TCP套接字接收缓冲区大小。提高接收性能。
  • net.ipv4.tcp_wmem:定义TCP套接字发送缓冲区大小。提高发送性能。
  • net.core.rmem_max:定义系统接收缓冲区最大大小。提高接收性能。
  • net.core.wmem_max:定义系统发送缓冲区最大大小。提高发送性能。

3. 虚拟内存调优

# 编辑 /etc/sysctl.conf
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
vm.overcommit_memory = 1

说明及好处

  • vm.swappiness:设置系统在内存不足时使用swap的倾向。较低的值(如10)意味着尽量使用物理内存,减少swap的使用,提升性能。
  • vm.dirty_ratio:设置系统开始将脏数据写回磁盘的阈值。减少该值可以减少突发I/O,保持系统响应性。
  • vm.dirty_background_ratio:设置后台写回进程开始运行的阈值。减少该值可以减少突发I/O,保持系统响应性。
  • vm.overcommit_memory:定义内存分配策略。值为1时,允许超量分配内存。适用于需要大量内存的应用。

上述3个内容可以执行使用,下面几个按需测试后使用。

4. I/O调优

# 编辑 /etc/sysctl.conf
vm.dirty_expire_centisecs = 1500
vm.dirty_writeback_centisecs = 100

# 调整I/O调度器
echo noop > /sys/block/sda/queue/scheduler
# 或者
echo deadline > /sys/block/sda/queue/scheduler

说明及好处

  • vm.dirty_expire_centisecs:定义脏数据在写回之前可以停留在内存中的时间。减少该值可以减少数据丢失的风险。

  • vm.dirty_writeback_centisecs:定义后台写回进程运行的间隔。减少该值可以减少脏数据的堆积。

  • noop:I/O调度器,不做任何调度,适用于SSD。

  • deadline:I/O调度器,提供确定的I/O响应时间,适用于数据库应用。

5. 网络接口调优

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

# 中断平衡
echo 1 > /proc/irq/XX/smp_affinity # 其中XX是网络接口的IRQ号

说明及好处

  • ethtool -G:设置网卡的接收(rx)和发送(tx)队列长度。增大队列长度可以减少丢包。
  • smp_affinity:定义中断请求(IRQ)在多核CPU上的分布。开启中断平衡可以提高多核CPU的效率。

6. 进程调度调优

# 适合高并发应用的调度策略
echo "cfq" > /sys/block/sda/queue/scheduler

说明及好处

  • cfq(完全公平队列):适合高并发应用,提供更好的I/O性能。

应用并加载新的内核参数

sysctl -p

说明及好处

  • sysctl -p:加载/etc/sysctl.conf中的配置,使新配置立即生效。

这些配置根据不同的应用场景和需求进行了优化,可以帮助Linux服务器在各种负载条件下发挥最佳性能。实际使用中需要根据具体情况进行微调和测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值