当前位置: 首页 > news >正文

Linux系统TCP/IP网络参数优化

Linux系统TCP/IP网络参数优化

最大连接数相关参数

# 临时设置
echo 65535 > /proc/sys/net/core/somaxconn
echo 262144 > /proc/sys/net/ipv4/tcp_max_syn_backlog# 永久设置(添加到/etc/sysctl.conf)
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 262144
  • somaxconn: 定义系统中每一个端口最大的监听队列长度,影响accept队列大小 tcp_max_syn_backlog:
  • 控制SYN_RECV状态连接的最大数量,防止SYN Flood攻击
  • 建议值:高并发服务器建议设置为65535以上,需与应用程序的backlog参数匹配

端口范围调整

# 临时设置
echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range# 永久设置
net.ipv4.ip_local_port_range = 1024 65535
  • 作用:定义本地发起的TCP/UDP连接可用的临时端口范围
  • 优化建议:对于频繁建立短连接的客户端(如负载均衡器、代理服务器),扩大端口范围可防止端口耗尽
  • 注意事项:避免与已用服务端口冲突,建议保留1024-32767给系统服务

缓冲区大小调整

# 接收缓冲区
net.core.rmem_default = 262144    # 默认接收窗口大小
net.core.rmem_max = 16777216     # 最大接收窗口大小# 发送缓冲区
net.core.wmem_default = 262144   # 默认发送窗口大小
net.core.wmem_max = 16777216     # 最大发送窗口大小# TCP缓冲区自动调整范围
net.ipv4.tcp_rmem = 4096 87380 16777216  # min default max
net.ipv4.tcp_wmem = 4096 65536 16777216
  • 优化原则:
    • 高带宽高延迟网络(如IDC间专线):增大缓冲区(16MB以上)
    • 低延迟局域网:适中缓冲区(1-4MB)
    • 移动网络:较小缓冲区(256KB-1MB)
  • 计算公式:带宽(bps) × 往返时间(s) / 8 = 理想缓冲区大小

TCP窗口缩放与时间戳

net.ipv4.tcp_window_scaling = 1      # 启用窗口缩放选项
net.ipv4.tcp_timestamps = 1         # 启用时间戳选项
net.ipv4.tcp_adv_win_scale = 1      # 缓冲区预留比例
  • tcp_window_scaling:突破65535字节的窗口限制,支持最高1GB窗口
  • tcp_timestamps:提供更精确的RTT测量和PAWS保护
  • 注意事项:在NAT环境中需谨慎启用时间戳,可能引起问题

TIME_WAIT状态处理

net.ipv4.tcp_tw_reuse = 1           # 允许复用TIME-WAIT状态连接
net.ipv4.tcp_tw_recycle = 0         # 不建议在NAT环境下启用
net.ipv4.tcp_fin_timeout = 30       # FIN-WAIT-2状态超时
net.ipv4.tcp_max_tw_buckets = 20000 # TIME-WAIT最大数量
  • 生产建议:
    • 短连接服务:启用tw_reuse,增加max_tw_buckets
    • 长连接服务:保持默认即可
    • 避免使用tw_recycle,可能导致NAT用户连接问题

保持活动连接

net.ipv4.tcp_keepalive_time = 600    # 开始发送keepalive探测包的时间
net.ipv4.tcp_keepalive_intvl = 60    # 探测间隔
net.ipv4.tcp_keepalive_probes = 10   # 探测次数
  • 适用场景:
    • 有状态防火墙后的长连接
    • 移动网络等不稳定环境
    • 需要快速发现对端故障的场景
  • 调优建议:根据网络稳定性调整,平衡及时性和开销

拥塞控制算法

算法选择

# 查看可用算法
cat /proc/sys/net/ipv4/tcp_available_congestion_control# 设置拥塞控制算法
net.ipv4.tcp_congestion_control = bbr  # 可选:cubic, bbr, htcp等
  • 算法比较:
    • cubic:默认算法,适合大多数场景
    • bbr:Google开发,避免bufferbloat,适合高带宽高延迟网络
    • htcp:高速网络优化版本

BBR专属配置

# 启用BBR
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr# BBR参数调优(内核4.20+)
net.ipv4.tcp_bbr_bw_win_sec = 10     # 带宽采样窗口
net.ipv4.tcp_bbr_min_rtt_win_sec = 10 # RTT采样窗口
  • BBR适用场景:
    • 视频流媒体服务器
    • 跨地域高速传输
    • 存在bufferbloat的网络环境

SYN Flood防护

net.ipv4.tcp_syncookies = 1           # 启用SYN Cookie
net.ipv4.tcp_synack_retries = 2       # SYN-ACK重试次数
net.ipv4.tcp_max_syn_backlog = 262144 # SYN队列长度
  • 防护组合:
    • 启用syncookies作为最后防线
    • 适当增大syn_backlog
    • 减少synack_retries加速失败检测

内存相关保护

net.ipv4.tcp_mem = 94500000 915000000 927000000 # min pressure max
net.ipv4.tcp_rmem = 4096 87380 6291456         # 每个socket接收缓冲
net.ipv4.tcp_wmem = 4096 16384 4194304         # 每个socket发送缓冲
  • 内存计算:
    • tcp_mem三个值分别为:低于min不限制,达到pressure开始压力模式,超过max拒绝分配
    • 建议值:根据系统总内存调整,通常为总内存的5%-10%

应用场景优化模板

高并发Web服务器(Nginx/Apache)

# 连接处理
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1# 文件描述符
fs.file-max = 1000000
fs.nr_open = 1000000# 缓冲区优化
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216# Keepalive优化
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5

数据库服务器(MySQL/PostgreSQL)

# 内存与缓冲区
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432# 连接处理
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 8192# 禁用透明大页(对某些数据库重要)
vm.zone_reclaim_mode = 0
vm.swappiness = 1

实时视频流服务器

# 拥塞控制
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr# 内存与缓冲区
net.ipv4.tcp_mem = 8388608 12582912 16777216
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432# 延迟优化
net.ipv4.tcp_low_latency = 1
net.ipv4.tcp_slow_start_after_idle = 0

参考文献:

Linux系统TCP/IP网络参数全面优化指南
Linux上TCP的几个内核参数调优


文章转载自:

http://l2nfMznY.sfwcb.cn
http://3sL2BdJb.sfwcb.cn
http://lIFvogtB.sfwcb.cn
http://pHtAWdSH.sfwcb.cn
http://GvXDXm2W.sfwcb.cn
http://Fr0y8FYH.sfwcb.cn
http://sbaufxJD.sfwcb.cn
http://QYL2QoPA.sfwcb.cn
http://smHVMJGS.sfwcb.cn
http://o6LHRiTD.sfwcb.cn
http://gfepU73G.sfwcb.cn
http://ZyvnNtOJ.sfwcb.cn
http://UuFiqKDq.sfwcb.cn
http://cL0v9zkw.sfwcb.cn
http://LhITiXfO.sfwcb.cn
http://FmUlA6ye.sfwcb.cn
http://uXNqso9F.sfwcb.cn
http://Y4LLvsbO.sfwcb.cn
http://MnXhmPta.sfwcb.cn
http://b163mqLB.sfwcb.cn
http://LDrmEUyJ.sfwcb.cn
http://ZcyNMgUf.sfwcb.cn
http://QZN1MmnG.sfwcb.cn
http://pHoC5vTo.sfwcb.cn
http://yqPXzbmw.sfwcb.cn
http://Hq8KA36e.sfwcb.cn
http://6MDaa0EN.sfwcb.cn
http://wZlCLqg5.sfwcb.cn
http://URcmZ8UQ.sfwcb.cn
http://s3NCTTqQ.sfwcb.cn
http://www.dtcms.com/a/368279.html

相关文章:

  • 多模联邦查询网关:ABP + Trino/Presto 聚合跨源数据
  • 基于单片机智能家居环境检测系统/室内环境检测设计
  • 23种设计模式-模板方法模式
  • 容器学习day05_k8s(二)
  • ES04-批量写入
  • 大数据毕业设计推荐:基于Spark的零售时尚精品店销售数据分析系统【Hadoop+python+spark】
  • 企业数字安全双保险:终端安全与数据防泄漏如何构筑全方位防护体系
  • 信息系统安全保护措施文件方案
  • 【C++】 list 容器模拟实现解析
  • 鹿客发布旗舰新品AI智能锁V6 Max,打造AI家庭安全领域新标杆
  • 【GEOS-Chem 输入数据】使用 AWS CLI 访问 GEOS-Chem 数据
  • 23种设计模式——原型模式 (Prototype Pattern)详解
  • 《Cocos Creator的2D、3D渲染使用记录》
  • Conda 使用py环境隔离
  • 数据结构:栈和队列力扣算法题
  • 深度学习之第八课迁移学习(残差网络ResNet)
  • 数据一致性、AI样本可追溯性与数据治理
  • 基于MATLAB的CNN大气散射传播率计算与图像去雾实现
  • 【Redis】初识 Redis 与基础数据结构
  • 分布式常见面试题整理
  • “卧槽,系统又崩了!”——别慌,这也许是你看过最通俗易懂的分布式入门
  • 数字时代的 “安全刚需”:为什么销售管理企业都在做手机号码脱敏
  • 乐观并发: TCP 与编程实践
  • 两条平面直线之间通过三次多项式曲线进行过渡的方法介绍
  • if __name__=‘__main__‘的用处
  • MySQL知识回顾总结----数据类型
  • WeaveFox AI智能开发平台介绍
  • Oracle:select top 5
  • sub3G、sub6G和LB、MB、HB、MHB、LMHB、UHB之间的区别和联系
  • Tenda AC20路由器缓冲区溢出漏洞分析