最近接手一个Python web项目,项目中使用 Celery 异步执行一些耗时任务,服务每天都有部分接口阶段性的出现 500 响应。
查看日志发现是 Celery 在执行异步任务时与 Redis 断开连接。
主要错误日志如下:
File ""/usr/local/lib/python3. 6/site-packages/redis/connection, py"", line 613, in send_packed_command
(errno, errmsg))
redis. exceptions. ConnectionError: Error 104 while writing to socket. Connection reset by peer.
由于刚接手项目,本人对 Celery 也不熟,处于会跑示例代码的水平,所以甩锅给 Redis ,联系运维人员查看 Redis 运行日志,发现如下问题:
Client id=1001 addr=127.0.0.1:49148 fd=17 name= age=3 idle=0 flags=N db=1 sub=559686 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=2998 omem=49146289 events=rw cmd=subscribe scheduled to be closed ASAP for overcoming of output buffer limits.
得出的结论为ÿ