java socket server keep alive implementation

时间:2012-05-11 13:44:16

标签: java sockets keep-alive

我试图在php中构建一个套接字服务器,但发现由于php中缺少多线程功能,如果服务器加载了连接(假设即使是少量的300连接),服务器也是如此会很慢。

我已经切换到java,并构建了一个多线程套接字服务器,并尝试在10秒内通过100连接重载它,我必须说它勇敢地采取了它...我自己的电脑(这使得超载)变得真实在此过程中速度很慢,但服务器看起来还不错。

因为我正在构建一个应该同时运行大量连接的服务器,所以我试图提高效率,而不是让任何鬼连接都打开。

我正在实施“保持活力”方法,我的问题如下: 如果我在我的服务器中打开了600个打开的连接,显然需要服务器时间在所有线程之间运行以检查保持活动,甚至从客户端获取保持活动消息 - 应该是什么时候检查是否保持发送了活着的消息。 我认为大约2分钟左右 - 所以服务器想要忙,而另一方面我不希望我的客户经常发送数据.. 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

600个开放连接。假设每2分钟120秒发送一次保持活动,这意味着每秒大约有5个线程准备好发送保持活动状态。假设所有连接都已启动,五个线程将在不久之后再次准备好处理来自对等体的回声。因此,需要运行大约十个线程/秒来支持保持活动。

这是一个微不足道的负担。

如果客户端很忙,那么这些客户端将不会被发送保持活动,因此当客户端变得非常繁忙时,保持活动的加载会下降。

你听起来应该没事。