调整Linux系统backlog参数能显著降低内存占用吗?
- 内容介绍
- 文章标签
- 相关推荐
在现代 Linux 运维里厮混久了,总会遇到些让人哭笑不得的 "灵异事件":服务器明明没跑什么大程序,Cpu 和磁盘都闲着,but memory usage就是高居不下像被施了魔咒一般查遍进程列表也找不到 "凶手",直到某天翻 /proc/net/tcp 的时候才愕然发现——原来是那个藏在角落的 backlog 参数在偷偷 "吃 memory " !
别笑 ,这真不是夸张说法 .作为一个踩过无数次 " connection timeout " 和 " memory alarm " 坑 的老运 这就说得通了。 维 ,今天必须把 backlog 参数扒个底朝天 :它到底怎么吞 memory ?调整它真能 "显著降 memory "吗 ?且听我慢慢唠 .
一、 先破个谣:Linux 的 backlog ,从来不是单个参数那么简单
提起 backlog ,很多人第一反应就是 "网络连接排队参数嘛",但其实吧 —— 它管着俩 "分工明确 " 的队 太坑了。 列 ,一个叫 SYN 半连接队 ,另一个叫 Accept 全连队 ,这俩才是 memory 的 "隐形吸血鬼 ".
别急着嫌麻烦 ,先给大伙讲个血淋淋的真实案例 :去年双十二前夕 ,我们团队负责的电商支付系统突然集体报 "memory critical ",监控面板上红线直蹦跶 .一开始全员盯着 Java 进程骂 ,后来啊杀了几个 Tomcat 实例之后 ,memory 不降反升 .再说说蹲在服务器跟前逐条查 /proc 文件 ,才发现罪魁祸首是前同事为 "防过载 "私自改大的 tcpmaxsyn_backlog ——从默认的 1024 被拉到了惊人的 8192 !,抓到重点了。
光这个 SYN 半连队 ,就悄摸摸吃掉了近百兆 memory .更坑爹的是 Acce 人间清醒。
在现代 Linux 运维里厮混久了,总会遇到些让人哭笑不得的 "灵异事件":服务器明明没跑什么大程序,Cpu 和磁盘都闲着,but memory usage就是高居不下像被施了魔咒一般查遍进程列表也找不到 "凶手",直到某天翻 /proc/net/tcp 的时候才愕然发现——原来是那个藏在角落的 backlog 参数在偷偷 "吃 memory " !
别笑 ,这真不是夸张说法 .作为一个踩过无数次 " connection timeout " 和 " memory alarm " 坑 的老运 这就说得通了。 维 ,今天必须把 backlog 参数扒个底朝天 :它到底怎么吞 memory ?调整它真能 "显著降 memory "吗 ?且听我慢慢唠 .
一、 先破个谣:Linux 的 backlog ,从来不是单个参数那么简单
提起 backlog ,很多人第一反应就是 "网络连接排队参数嘛",但其实吧 —— 它管着俩 "分工明确 " 的队 太坑了。 列 ,一个叫 SYN 半连接队 ,另一个叫 Accept 全连队 ,这俩才是 memory 的 "隐形吸血鬼 ".
别急着嫌麻烦 ,先给大伙讲个血淋淋的真实案例 :去年双十二前夕 ,我们团队负责的电商支付系统突然集体报 "memory critical ",监控面板上红线直蹦跶 .一开始全员盯着 Java 进程骂 ,后来啊杀了几个 Tomcat 实例之后 ,memory 不降反升 .再说说蹲在服务器跟前逐条查 /proc 文件 ,才发现罪魁祸首是前同事为 "防过载 "私自改大的 tcpmaxsyn_backlog ——从默认的 1024 被拉到了惊人的 8192 !,抓到重点了。
光这个 SYN 半连队 ,就悄摸摸吃掉了近百兆 memory .更坑爹的是 Acce 人间清醒。

