簡體   English   中英

Java套接字服務器停止響應所有連接

[英]Java Socket Server Stops Responding To All Connections

我有一個Java套接字服務器,它接受來自Flash客戶端的連接並將消息發送到連接到游戲的其他Flash客戶端,它還將一些位記錄到MySQL數據庫中。 服務器工作正常,直到客戶端數量超過〜100,然后它突然停止響應所有連接,它也不接受新連接,僅重新啟動才使其重新工作。 服務器使用多線程,因此為每個客戶端產生一個新線程。 當前的物理服務器具有16個處理器和〜4gb的RAM(甚至不使用那么多的內存)。 我嘗試使用-Xms -Xmx -server / etc命令行屬性運行服務器,但是沒有任何幫助。

jstack不會顯示任何異常(或者不是,我看不到,也可以根據需要將其發布),除了它會卡在代碼的服務器線程部分(第59行)中的以下readByte()之外:

while(((cr = streamIn.readByte()) != EOF))
    {
     if(amount < 100)
     {
      a+=(char)cr;
      amount++;
     }
     else
      break;
    }

編輯:顯然不需要所有代碼-當它得到EOF異常時,它會主動阻止其readByte()。 Wil現在問另一個問題,該如何解決。

快速猜測:

快速射擊是您將達到100個數據庫連接限制。 查看更多-http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

一些一般提示:

  • 嘗試使用ExecutorService進行線程管理,
  • 使用NIO,
  • 驗證數據庫連接是否關閉

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM