0

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

我尝试将来自客户端的 6000 个请求发布到我的服务器 API。但我的服务器 API 只接受大约 2000 多个请求。4000 其他失败。

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

 java.net.ConnectException: Connection refused

我的 server.xml 有配置:

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

有没有人有解决方案让我的服务器 API 可以获取所有客户端请求?

请帮我!谢谢

4

2 回答 2

2

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

  • maxThreads=50000 表示使用所有线程时内存超过 15 GB(win32)!
  • minSpareThreads=10000 表示启动时消耗大约 3 GB 内存(win32)!
  • keepAliveTimeout=3200000 表示如果客户端未使用/关闭连接,则连接将保持打开 > 53 小时!
  • maxIdleTime=1000000 意味着未使用的线程在被销毁之前会继续存在长达 16 小时!
于 2013-09-24T09:35:24.497 回答
0

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

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

于 2013-09-24T11:25:31.057 回答