插件窝 干货文章 如何优化和调整Linux服务器的网络延迟和吞吐量

如何优化和调整Linux服务器的网络延迟和吞吐量

TCP net 优化 ipv 361    来源:    2025-04-17

Linux服务器网络性能优化指南

优化Linux服务器的网络延迟和吞吐量需要从多个层面进行调整。以下是一套全面的优化方案:

1. 内核参数调优

TCP/IP协议栈优化

# 编辑/etc/sysctl.conf文件,添加或修改以下参数
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.core.somaxconn = 32768
net.core.netdev_max_backlog = 5000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = cubic # 或bbr

应用修改:sysctl -p

2. 网络接口优化

调整MTU大小

# 查看当前MTU
ip link show

# 设置MTU(通常1500,对于高速网络可尝试9000)
ifconfig eth0 mtu 9000

启用TCP卸载引擎(TOE)

# 查看支持的功能
ethtool -k eth0

# 启用GRO/GSO
ethtool -K eth0 gro on
ethtool -K eth0 gso on

# 启用TCP分段卸载
ethtool -K eth0 tso on

中断合并与队列调整

# 调整接收队列大小
ethtool -G eth0 rx 4096 tx 4096

# 启用中断合并
ethtool -C eth0 rx-usecs 100

# 多队列设置(需要网卡支持)
ethtool -L eth0 combined 8

3. 高级协议优化

启用TCP BBR拥塞控制算法

# 检查可用算法
sysctl net.ipv4.tcp_available_congestion_control

# 启用BBR
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

调整TCP窗口缩放

# 在/etc/sysctl.conf中添加
net.ipv4.tcp_window_scaling = 1

4. 硬件与驱动优化

更新网卡驱动

# 检查当前驱动版本
ethtool -i eth0

# 从厂商网站下载最新驱动并安装

NUMA绑定(对于多CPU系统)

# 将网卡中断绑定到特定CPU核心
cat /proc/interrupts | grep eth0
echo "0-3" > /proc/irq/[中断号]/smp_affinity_list

5. 监控与诊断工具

常用监控命令

# 实时网络统计
sar -n DEV 1

# TCP连接状态统计
ss -s

# 网络延迟测量
ping -c 10 example.com
mtr example.com

# 带宽测试
iperf3 -c server_ip

性能瓶颈诊断

# 查看丢包和错误
netstat -i
ip -s link

# 详细TCP统计
cat /proc/net/netstat

# 跟踪网络调用
strace -e trace=network -p [PID]

6. 应用层优化

  • 使用HTTP/2或HTTP/3替代HTTP/1.1
  • 启用TLS会话恢复和OCSP Stapling
  • 优化应用连接池设置
  • 考虑使用QUIC协议(适合高延迟网络)

注意事项

  1. 所有修改前应先在测试环境验证
  2. 记录修改前的原始配置以便回滚
  3. 不同应用场景可能需要不同的优化组合
  4. 监控优化前后的性能变化
  5. 某些优化可能需要重启网络服务或整个系统

通过以上综合调整,可以显著改善Linux服务器的网络延迟和吞吐量性能。最佳配置取决于具体硬件、网络环境和应用特点。