我有一个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异常时主动阻止。威尔现在问另一个问题如何解决它。
答案 0 :(得分:0)
快速拍摄是您达到DB的100个连接限制。查看更多 - http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html