0

0

Linux TCP/IP 堆栈调优实战

舞姬之光

舞姬之光

发布时间:2026-02-14 20:14:03

|

565人浏览过

|

来源于php中文网

原创

linux tcp/ip协议栈调优可解决吞吐低、延迟高、time_wait堆积等问题:一、调大tcp收发缓冲区;二、启用tcp fast open减少rtt;三、复用time_wait端口并谨慎调短超时;四、按需禁用时间戳、启用并限制sack;五、增大连接队列并开启syn cookie。

linux tcp/ip 堆栈调优实战

如果您在Linux系统中遇到网络吞吐量低、连接延迟高或大量TIME_WAIT连接堆积等问题,很可能是TCP/IP协议默认参数未能适配当前工作负载。以下是针对常见性能瓶颈的调优操作步骤:

一、调整TCP接收与发送缓冲区大小

TCP缓冲区过小会限制单连接吞吐能力,尤其在高带宽延迟积(BDP)网络中易成为瓶颈。通过增大内核自动调节范围并设置合理下限,可提升大文件传输与长肥管道场景下的效率。

1、编辑/etc/sysctl.conf文件,添加或修改以下参数:

2、net.core.rmem_max = 16777216

3、net.core.wmem_max = 16777216

4、net.ipv4.tcp_rmem = 4096 65536 16777216

5、net.ipv4.tcp_wmem = 4096 65536 16777216

6、执行sysctl -p使配置生效。

二、启用TCP快速打开(TFO)

TCP Fast Open允许在SYN包中携带数据,减少一次往返时延(RTT),适用于短连接密集型服务(如HTTP API)。该功能需客户端和服务端同时支持且内核版本≥3.7。

1、确认内核支持:检查/proc/sys/net/ipv4/tcp_fastopen是否存在。

2、启用TFO服务端功能:echo 3 > /proc/sys/net/ipv4/tcp_fastopen

3、在应用程序中调用setsockopt()设置TCP_FASTOPEN选项,并使用sendto()在SYN阶段发送初始数据。

飞笔AI
飞笔AI

飞笔AI致力于创作高质量的海报等图像,满足用户个性化设计需求。用户可通过平台便捷地创建各种风格和主题的海报、新媒体素材图等。

下载

三、优化TIME_WAIT连接回收

大量短连接关闭后进入TIME_WAIT状态,可能耗尽本地端口资源或占用连接跟踪表项。可通过复用与加速回收两种方式缓解,但需注意NAT环境下的风险。

1、启用端口复用:echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse

2、降低TIME_WAIT超时时间(仅限测试环境):echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

3、关闭连接跟踪对TIME_WAIT的严格计数(若使用iptables/nftables):echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal

四、禁用TCP时间戳与选择性应答微调

TCP时间戳(RFC 1323)虽有助于RTT测量和PAWS防序号回绕,但在某些虚拟化或容器网络中可能引入额外开销;SACK则影响丢包恢复效率。可根据实际链路质量决定是否关闭或限制。

1、禁用TCP时间戳:echo 0 > /proc/sys/net/ipv4/tcp_timestamps

2、启用SACK(默认开启,此处为显式确认):echo 1 > /proc/sys/net/ipv4/tcp_sack

3、限制SACK块数量以减少头部开销:echo 4 > /proc/sys/net/ipv4/tcp_dsack

五、调整连接队列长度与SYN处理机制

当突发连接请求超过内核半连接队列(syn queue)或全连接队列(accept queue)容量时,将触发SYN丢弃或连接拒绝。增大队列并启用SYN Cookie是应对SYN Flood类压力的关键措施。

1、增大全连接队列上限:echo 65535 > /proc/sys/net/core/somaxconn

2、增大半连接队列长度:echo 65535 > /proc/sys/net/ipv4/tcp_max_syn_backlog

3、启用SYN Cookie防御机制:echo 1 > /proc/sys/net/ipv4/tcp_syncookies

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6463

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

362

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

430

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

96

2025.08.19

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

417

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

589

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

417

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

589

2023.08.10

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

145

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.2万人学习

Git 教程
Git 教程

共21课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号