Mina的ProtocolEncoderOutput之坑

  這個問題是以前測試上萬個鏈接的pingpong發現的,調了好久,但當時急着作其餘事,就沒有詳細記錄下來,如今回想起來也有點記不清具體哪兒了。服務器

  表現是在測試上萬個鏈接的pingpong時會出現服務器掛起的現象,服務端沒法收到任何消息,因爲服務器用了OrderedThreadPoolExecutor,debug時發現OrderedThreadPoolExecutor的idleWorkers顯示有15個空閒線程,但workers裏一個Worker線程都沒有,因此NioProcessor提交的任務都沒法繼續,服務器整個被掛起……多線程

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

  在此記下這個坑

線程

相關文章
相關標籤/搜索