解析org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe


前段時間翻服務器應用運行日志,看到這個,作為愛學習的我,立馬百度了一下:

認識broken pipe

pipe是管道的意思,管道里面是數據流,通常是從文件或網絡套接字讀取的數據。 當該管道從另一端突然關閉時,會發生數據突然中斷,即是broken。 對於文件File來說,這可能是文件安裝在已斷開連接的光盤或遠程網絡上。 對於socket來說,可能是網絡被拔出或另一端的進程崩潰。 在Java中,沒有具體的BrokenPipeException。 將此類錯誤包含在另一個異常,例如java.io.IOException:Broken pipe

 

問題分析:


1、報文過大:處理的報文過大,導致客戶的端無法解析報文。 

2、文件過大:處理時間過長,由於執行時間較長或頻率較高,程序或服務器出發超時直接結束進程。

3、重復提交:處理時間過長導致當客戶端重復發送請求,而上次請求尚未完成,下次請求會close上次請求。

4、數據庫配置問題:mysql配置文件忘記配置wait_timeout參數,導致數據庫連接順序關閉(RS、PS、CONN)。

5、另外就是:Java虛擬機內存太小或者使用低版本的JVM,出發垃圾回收。 

 

由於kill進程我們無法控制,故只能通過降低接口處理時間,減少用戶kill進程時未完成的TCP連接數量。

具體:

  1. 會話列表翻頁
  2. 會話列表限制展示數量
  3. 客戶端分組獲取會話列表數據

當然,對於服務器來說,該底層異常,並不影響,所以暫可忽略

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM