关于 celery 和 redis 的 CLOSE_WAIT 连接问题

2018-12-25 15:14:06 +08:00
 zhu123456
使用 celery 时,用 redis 作为 result_backend 和 broker,配置是 CELERY_RESULT_BACKEND = 'redis://localhost:6379/2',CELERY_BROKER_URL = 'redis://localhost:6379/0'。执行任务时,一开始会生成很多 ESTABLISHED 的 tcp 连接无法回收,connected_clients 不断累积。如:uwsgi 31657 root 2263u IPv6 918201 0t0 TCP localhost:39098->localhost:6379 (ESTABLISHED)。
后来在 redis 的配置中添加了 timeout=60,redis 中利用 info clients 命令查询发现,connected_clients 数量过一段时间确实会降下来;但是利用 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'命令查询发现,又产生大量的 CLOSE_WAIT 的 tcp6 连接,用 lsof -i 命令查看连接结果是,如:uwsgi 31657 root 3289u IPv6 934052 0t0 TCP localhost:41230->localhost:6379 (CLOSE_WAIT)。(项目中,没有使用任何连接池)该怎么解决大量 CLOSE_WAIT 连接问题? 头大了好几天了,望大佬指点一下
1495 次点击
所在节点    Python
0 条回复

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

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

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

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

© 2021 V2EX