nsq的hanlder任务执行时间一长会报IO error错误(大概两分钟左右)

小弟正在开发go语言基于nsq的异步任务。但是现在发现,只要任务时间一长,客户端就会报错,报错信息如下:
2019/08/28 09:21:59 ERR 2 [free/alfx] (127.0.0.1:4150) IO error - write tcp 127.0.0.1:49703->127.0.0.1:4150: write: broken pipe
2019/08/28 09:21:59 ERR 2 [free/alfx] (127.0.0.1:4150) error sending RDY 1 - write tcp 127.0.0.1:49703->127.0.0.1:4150: write: broken pipe
2019/08/28 09:21:59 WRN 2 [free/alfx] (127.0.0.1:4150) delaying close, 1 outstanding messages
2019/08/28 09:21:59 INF 2 [free/alfx] (127.0.0.1:4150) readLoop exiting
2019/08/28 09:21:59 ERR 2 [free/alfx] (127.0.0.1:4150) IO error - write tcp 127.0.0.1:49703->127.0.0.1:4150: write: broken pipe
2019/08/28 09:21:59 ERR 2 [free/alfx] (127.0.0.1:4150) error sending command FIN 0bf6a0f2ad358000 - write tcp 127.0.0.1:49703->127.0.0.1:4150: write: broken pipe
2019/08/28 09:21:59 INF 2 [free/alfx] (127.0.0.1:4150) beginning close
2019/08/28 09:21:59 INF 2 [free/alfx] (127.0.0.1:4150) breaking out of writeLoop
2019/08/28 09:21:59 INF 2 [free/alfx] (127.0.0.1:4150) writeLoop exiting
2019/08/28 09:21:59 INF 2 [free/alfx] (127.0.0.1:4150) finished draining, cleanup exiting
2019/08/28 09:21:59 INF 2 [free/alfx] (127.0.0.1:4150) clean close complete

目测是链接超时,回写消费状态失败了,但是小弟调了好多参数,也没能避免这个报错。烦请各位大大指点,非常感谢

阅读 3.8k
1 个回答
  1. 看着这是客户端的错误。
  2. broken pipe 的原因是nsq 服务端主动关闭了你的连接
  3. 如果是自己写的nsq 客户端,记得定时touch 消息才能保证执行时间较长的任务不会报错
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏