你们有没有遇到过 Celery 假死

2017-08-01 23:13:04 +08:00
 herozem

RT, 在线上用 Celery 4,执行一定数量的任务之后就假死,但是每次数量和时间不定。

broker 是 redis,redis 版本是 4.0.1 和 4.1.2 都试过,都会假死。

7901 次点击
所在节点    问与答
21 条回复
mringg
2017-08-01 23:18:06 +08:00
检查日志,看看有没有什么错误信息
herozem
2017-08-01 23:33:18 +08:00
@mringg 没开 debug,只开了 info,然后日志突然卡住不再输出,也没有看到什么异常的消息。上 celery flower 看,worker 的状态是 offline
rogwan
2017-08-01 23:34:42 +08:00
定时任务吗?还是只是异步?
herozem
2017-08-02 00:58:30 +08:00
@rogwan 只是异步任务。几天没看,结果累积了一百多万任务没执行
111111111111
2017-08-02 01:01:28 +08:00
常常遇到。暂时采用 worker 定时重启的方式解决
rogwan
2017-08-02 07:56:11 +08:00
如果使用了自动持续集成,最好在不影响用户使用的时间段,重启一下服务器。否则是容易出现队列假死的情况。
KgM4gLtF0shViDH3
2017-08-02 08:24:54 +08:00
握草,积累了一百多万,做分布式了嘛
L2AKnG8GXx60bc6P
2017-08-02 09:53:55 +08:00
换 rq 吧
herozem
2017-08-02 09:54:00 +08:00
@111111111111 我也是 :joy:
herozem
2017-08-02 09:57:25 +08:00
@rogwan 嗯,现在跑一段时间就要重启一次,已经快要顾不上用户体验了...
herozem
2017-08-02 09:57:45 +08:00
@bestkayle celery 有,但是 broker 没
herozem
2017-08-02 09:58:11 +08:00
@relic 说不定又是一个坑,BTW,rq 有实际体验可以分享分享吗?
eloah
2017-08-02 10:26:59 +08:00
4.0.2, broker 是 redis.
我遇到的坑是 celery 的任务流使用 SUBSCRIBE,有时会在一条命令里订阅超多的 task,阻塞 redis 导致超时......翻了 N 久源代码也没解决......而且是随机出现的,超级难复现......
解决方法是让运维关掉这台机器的 redis 报警
Doge
herozem
2017-08-02 10:53:09 +08:00
@eloah 有道理 :joy:
dozer47528
2017-08-02 10:56:27 +08:00
遇到过,也是 redis。Redis 报警,too many new connections,celery 不断的重连 redis,慢慢地到最后就直接连不上了。
之前是大批量异步任务,QPS 非常高。后来改成批量发送,QPS 变小,目前没遇到过。

不清楚是累积到一定量会出现还是 QPS 大于一定值会出现。
mringg
2017-08-02 11:32:29 +08:00
直接用 mq 自己裸写代码吧
MarcoQin
2017-08-02 12:23:27 +08:00
我之前用 celery 做爬虫的时候也经常这样……
L2AKnG8GXx60bc6P
2017-08-02 22:38:11 +08:00
@herozem rq 简单啊,有问题追源码就好了,我们的项目就用 rq 替换掉了了 celery,不过那是因为和 gevent 不兼容
julyclyde
2017-08-03 09:48:36 +08:00
去年遇到过,不过检查发现不是 celery 的问题,而是执行的那个异步任务本身卡死了
fkdtz
2017-09-02 20:10:35 +08:00
我这边不时遇到某个 worker 不再执行任务,而其他 worker 会报出一个“ missed heartbeat from xxxworker ”的 log 出来。
查了资料好像是该 worker 处于 offline 状态导致的,但不知道为什么该 worker 会 offline。感觉 celery 东西好多啊,用着有点难。

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

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

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

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

© 2021 V2EX