Broken Pipeline 問題的解決過程

昨天線上app出現了奇怪的問題: 先是有用戶反饋預定時間功能不可用,咱們本身能夠重現,但不是每次必現,緊接着不少用戶陸續開始反饋。nginx

因爲這兩天並無修改線上系統,只能從日誌線索來查找,發現查詢預定時間表會出現Broken Pipeline的錯誤,但奇怪的是,這個異常不是在業務代碼中觸發的,而是全部業務代碼執行完畢之後,http response write stream的時候產生的。tomcat

上網搜索的時候,發現這個錯誤表示:通信的一端主動關閉了socket鏈接之後,另外一端還試圖寫入形成的。一些文章還提到對於nginx+tomcat的配置,這個問題是因爲nginx配置的超時時間不足,超時後主動斷開鏈接致使,或者是app端超時致使。其實這個異常發生的時間距離調用時間很是短(毫秒級),不像是超時致使,但病急亂投醫,並且該請求的返回數據量也較大(約500條數據),仍是嘗試了修改ngin x和app端的超時時間,都沒有效果。app

後來在查看nginx日誌的時候,發現了一個問題:有一個磁盤寫入失敗的日誌記錄,由此突然想到是否磁盤空間不足了,df查看果真如此!!!
清理日誌之後,問題解決。socket

改進思考:
磁盤空間不足問題已經出現過不止一次了,每次都會致使一些莫名其妙,難以定位的問題,爲了不,之後仍是應該設置磁盤監控報警,在真正用盡空間以前,就解決它。日誌

相關文章
相關標籤/搜索