什么是tomcat 7.0支持的活动websocket连接的最大数量

时间:2014-05-19 11:59:50

标签: tomcat websocket

我目前正在开发游戏服务器,为了避免从头开发服务器,我采用了tomcat 7.0,以便我可以专注于游戏逻辑。

根据要求,我使用websocket与客户端进行通信,但是当许多客户端连接到服务器时,无法建立新连接,我怀疑已建立连接的数量已达到最大计数。顺便说一句,tomcat使用APR连接器。

所以,我的问题是:

  1. tomcat 7.0支持的活动websocket连接的最大数量是什么。
  2. 如何配置。
  3. 是否有任何解决方案来对websocket进行负载均衡,因为apache和mod_jk现在不能用于负载均衡。
  4. 任何帮助将不胜感激,提前谢谢!

4 个答案:

答案 0 :(得分:11)

要在Tomcat中达到max alive websocket连接,需要进行以下配置更改。

  1. {CATALINA_HOME} /conf/server.xml

    <Connector connectionTimeout="-1" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443" maxConnections="100000" acceptCount="300"/>

  2. 检查部署Tomcat的m / c中可用的端口数:

    cat / proc / sys / net / ipv4 / ip_local_port_range

  3. 将此更改为50至65535。

    sysctl -w net.ipv4.ip_local_port_range="500   65535"
    

    如果服务器和客户端在不同的机器上运行,上述配置更改允许在2GB Intel Core i5机器中进行约50k的实时连接。

答案 1 :(得分:2)

  1. 上限是服务器可以支持的TCP连接数。
  2. 默认强制限制取决于您使用的连接器 - 您未能提供的信息。对于NIO和APOR / native,您希望增加maxConnections。对于bIO你;&#39;我想增加maxThreads。
  3. 这取决于您使用的负载均衡器 - 再次提供您未能提供的信息。

答案 2 :(得分:0)

websocket连接的总数由操作系统允许的开放文件描述符的数量决定,其中websocket服务器(在本例中为tomcat实例)正在运行。在unix机器上,我们有75000个文件描述符的硬限制,但我是不确定tomcat是否有能力产生新套接字

答案 3 :(得分:-1)

对于前两个问题,我认为答案可以在tomcat的conf文件夹中的server.xml文件中找到(〜/ conf / server.xml),请参阅Executor标签以及连接器的可用属性和参数以下链接可以帮助您(我从server.xml文件注释中提取它们):

Tomcat Java HTTP Connector

正如文档所说,您可以使用连接器的属性或使用Executor并将其与连接器链接,请参阅连接器标记中的executor属性的说明:

A reference to the name in an Executor element. If this attribute is set, 
and the named executor exists, the connector will use the executor, 
and all the other thread attributes will be ignored. Note that 
if a shared executor is not specified for a connector then 
the connector will use a private, internal executor 
to provide the thread pool.

此外,您可以覆盖Java AJP连接器的连接数:请参阅 以下文档:

Java AJP Connector

对于您的上一个问题,我认为如果现在不能使用复制和负载平衡工具,那么答案是尽快完成您在服务器内的工作以释放资源并将其提供给其他客户端。