社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
项目中一直使用celery来做异步任务的执行, broker使用的是redis。 最近每天都会有几次redis(带宽10M)写入带宽超过80%报警, 报警的时候查看redis log 没有发现大量数据写入。经过仔细查看发现大量下面的消息:
这条命令应该是celery在 subscribe result(猜测, 具体逻辑不清楚)。 celery result 里存储了40w+的数据, 突然想到是不是这条命令是慢查询,导致写操作有积压。 经过查看, 发现果然这个命令报了好多慢查询, 查询时间在800ms左右。
解决方法:
celery 配置增加:task_ignore_result = True
发现celery result 在逐渐减少。 经过大概一天的时间, celery result 为0。 这期间没有发生写入带宽报警。 写入带宽一直维持在10%以下。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!