mina-http之坑


  TCP是流式協議,不保證一次通信傳輸完整的包,當這種情況發生在mina-http時會產生嚴重的bug,圖中紅框部分只是將前后收到的數據拼在一起,但下面處理的還是最近收到的不完整的msg;此為大坑!

  輕則不能正常處理http請求,重則由於mina-http內部使用狀態機解析http請求,會導致內部狀態異常,而調用decode的上層又是while (buff.hasRemain()) { decoder.decode(); }某些極端情況下會對這個buf重復decode,會導致收到大量的http請求,產生大量HttpRequest對象,Full GC,OOM, JVM Crash……

  看了mina-http這段代碼,不知道作者是否真正測試過,對mina很失望……

 


 

后記:該問題在mina-2.0.8中得到了修復,建議使用mina-http的童鞋升級到2.0.8。


免責聲明!

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



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