服务器架构包括每个连接2个线程(阻塞读/写),一个ServerSocket线程用于生成新的客户端,以及一个控制器线程,轮询每个客户端以获取新操作,将其应用于游戏世界,然后在完成后刷新数据。
服务器是用Java构建的,我对Java不太熟悉,尤其在这种高压力情况下。在内存和线程管理方面,C#真的让我被宠坏了。
现在我刚刚订购了两个非常强大的系统作为专用游戏服务器,并希望最大限度地利用资源。关于Java资源配置的很多信息都被证明是误导性的、错误的或过时的。
我目前使用-Xss512k作为启动参数,并理解它规定了每个线程的堆栈大小分配,但并不完全理解它可能涉及到的一切。有哪些工具或方法可用于告诉我是否超过了标准并可以缩小规模?还应考虑哪些其他命令行参数?
新服务器具有16GB的RAM和i7-2600K Sandy Bridge 3.4GHz处理器:有哪些配置选项可以充分利用这一点?我的目标是每台服务器同时在线1,200个客户端(2,400个线程)。
我应该担心哪些意想不到的问题和问题?
我阅读了关于最大线程数的截然不同的故事:如果我试图推动2,400个活跃线程,会发生什么事情?
Java似乎不是为这种任务而设计的。我应该考虑将服务器迁移到另一种语言吗?
我目前在开发中使用Eclipse调试模式运行服务器。这是我的Eclipse.ini配置:--launcher.XXMaxPermSize 256M -Xms256m -Xmx1024m