Mina的ProtocolEncoderOutput之坑


  這個問題是之前測試上萬個連接的pingpong發現的,調了很久,但當時急着做其他事,就沒有詳細記錄下來,現在回想起來也有點記不清具體哪兒了。

  表現是在測試上萬個連接的pingpong時會出現服務器掛起的現象,服務端無法收到任何消息,由於服務器用了OrderedThreadPoolExecutor,debug時發現OrderedThreadPoolExecutor的idleWorkers顯示有15個空閑線程,但workers里一個Worker線程都沒有,所以NioProcessor提交的任務都無法繼續,服務器整個被掛起……

  后排排查發現mina的encoder最后手動調用了out.flush();,加了這行會在收發負載量大時因為mina的OrderedThreadPoolExecutor多線程模型導致內部拋異常、狀態異常。。。

  在此記下這個坑


免責聲明!

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



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