如何接受客户的许多请求

时间:2013-09-24 09:18:53

标签: java tomcat

我正在Tomcat服务器上开发一个struts2项目。

我尝试从客户端向我的服务器API发送6000请求。但我的服务器API只接受超过2000个请求。其他4000人失败了。

我收到了来自客户的消息,如下所示:

 java.net.ConnectException: Connection refused

我的server.xml有config:

    <Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="1000000" maxThreads="50000"  keepAliveTimeout="3200000"     minSpareThreads="10000" acceptCount="13000" maxIdleTime="1000000"
           redirectPort="8443" />

是否有人有解决方案允许我的服务器API可以获取所有客户端请求?

请帮帮我! 谢谢

2 个答案:

答案 0 :(得分:2)

我不知道这是否会导致您的问题,但您的配置值似乎太高了!

  • maxThreads = 50000表示使用所有线程时内存超过15 GB(win32)!
  • minSpareThreads = 10000表示启动时内存消耗约为3 GB(win32)!
  • keepAliveTimeout = 3200000表示如果客户端未使用/关闭连接,则会保持打开状态大于53小时!
  • maxIdleTime = 1000000表示未使用的线程在被销毁之前最多可存在16个小时!

答案 1 :(得分:0)

这可能是由于您在查看服务器的错误日志时可以看到的服务器上的一些错误。

一个简单的原因可能是数据库:如果您为每个线程创建一个数据库事务,那么您需要配置连接池(可能还有数据库本身)以允许6000个并发事务。