Broken Pipeline 问题的解决过程

昨天线上app出现了奇怪的问题: 先是有用户反馈预定时间功能不可用,咱们本身能够重现,但不是每次必现,紧接着不少用户陆续开始反馈。nginx

因为这两天并无修改线上系统,只能从日志线索来查找,发现查询预定时间表会出现Broken Pipeline的错误,但奇怪的是,这个异常不是在业务代码中触发的,而是全部业务代码执行完毕之后,http response write stream的时候产生的。tomcat

上网搜索的时候,发现这个错误表示:通信的一端主动关闭了socket链接之后,另外一端还试图写入形成的。一些文章还提到对于nginx+tomcat的配置,这个问题是因为nginx配置的超时时间不足,超时后主动断开链接致使,或者是app端超时致使。其实这个异常发生的时间距离调用时间很是短(毫秒级),不像是超时致使,但病急乱投医,并且该请求的返回数据量也较大(约500条数据),仍是尝试了修改ngin x和app端的超时时间,都没有效果。app

后来在查看nginx日志的时候,发现了一个问题:有一个磁盘写入失败的日志记录,由此突然想到是否磁盘空间不足了,df查看果真如此!!!
清理日志之后,问题解决。socket

改进思考:
磁盘空间不足问题已经出现过不止一次了,每次都会致使一些莫名其妙,难以定位的问题,为了不,之后仍是应该设置磁盘监控报警,在真正用尽空间以前,就解决它。日志

相关文章
相关标签/搜索