TCP: out of memory -- consider tuning tcp_mem 如何调整?

2021-11-09 11:13:43 +08:00
 everyx
我大家好,

服务器日志提示:`TCP: out of memory -- consider tuning tcp_mem`,网上搜了搜,感觉讲的都是云里雾里的,如何更具自己服务器的配置来设置这个参数呢?有相关文章推荐么?

谢谢大家。
2486 次点击
所在节点    Linux
7 条回复
kokutou
2021-11-09 11:19:45 +08:00
说是内存泄露,修复泄露 或者 加大参数+定时重启泄露的服务进程。。。
Xusually
2021-11-09 11:20:23 +08:00
内核优化没做,就日志的字面意思。
根据你服务器的具体配置优化内核参数,这些之类的:
core.netdev_max_backlog
core.rmem_max
core.wmem_max
ipv4.tcp_max_syn_backlog
ipv4.tcp_rmem
ipv4.tcp_wmem

你直接 Google 一下你这行日志,都是解决方法
everyx
2021-11-10 20:58:32 +08:00
@Xusually 我也查了一下,都说要调整这几个参数,但是具体的值如何根据自己的实际情况来确定,都不甚清楚,所以想向大家求教一下。
gengchun
2021-11-10 23:27:28 +08:00
这个具体看情况,比如机器是不是实机,配置如何,主要用途是什么。当前的内核参数是多少。这些都要有个上下文才行。

默认内核参数非常保守,大部分说这个参数的,场景都是用到应用主打网络栈。文章肯定都是说往高了调。
everyx
2021-11-12 20:32:04 +08:00
@gengchun 是 3 台 DigitalOcean 单核 2G 的主机上,docker swarm 挂了几个访问量不高的网站,其中一台用部署了 traefik 服务器上面有这个日志,可能是因为流量都要到这台服务器在转发到具体服务所在的服务器上。

有相关文章推荐么?谢谢啦
gengchun
2021-11-13 13:05:34 +08:00
@everyx DO 应该是改过 tcp_rmem 和 tcp_wmem 的这些的,不然光 ticket 就能烦死。

这个事情一般很少人会遇到,所以没有太好的文章可以看。你最多也只能看一下 cat /proc/net/sockstat 的输出。想再往下查只能是排除单个 socket 的内存用量。这个就烦了。就算接触过内核网络栈这个想排查也很麻烦。还不如直接重启。

只说一下个人猜测,如果访问量不高,不会有这个报错。除非自己把这两个值改的很小。否则很可能是应用问题。像 docker 的 containerd 这种链接溢出。

我不是来上班的,所以就只说到这里吧。
everyx
2021-11-13 15:41:16 +08:00
@gengchun 嗯嗯,谢谢啦,我再查查资料

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/814104

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX