Java套接字服务器停止响应所有连接

时间:2011-01-28 10:34:05

标签: java sockets

我有一个java套接字服务器,它接受来自flash客户端的连接并将消息发送到连接到游戏的其他flash客户端,它还将一些位记录到MySQL数据库。服务器工作正常,直到客户端数量超过~100,然后它突然停止响应所有连接,它也不接受新连接,只有重新启动使它再次工作。服务器使用多线程,因此它为每个客户端生成一个新线程。目前的物理服务器有16个处理器和~4GB的RAM(即使它没有使用那么多)。我尝试使用-Xms -Xmx -server / etc命令行属性运行服务器,但没有任何帮助。

jstack显示没有异常(或者我没有看到,我可以在需要时发布它),除了它被卡在代码的服务器线程部分(第59行)中的以下readByte()中: / p>

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

编辑:显然不需要拥有所有代码 - 它的readByte()在获得EOF异常时主动阻止。威尔现在问另一个问题如何解决它。

1 个答案:

答案 0 :(得分:0)

快速猜测:

快速拍摄是您达到DB的100个连接限制。查看更多 - http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

一些一般性提示:

  • 尝试使用ExecutorService进行线程管理,
  • 使用NIO,
  • 验证数据库连接是否已关闭