0
我与Tomcat的如下问题并发服务请求时:Tomcat服务器
我创建了一个模拟Web服务,我使用的Thread.sleep(时间)来定义模拟服务的执行时间。我将此服务部署到Tomcat。
我创建了一个客户端来同时向服务发送多个请求(50个请求)。
当我将执行时间设置为一个小数字(例如2000毫秒)时,50个请求被成功返回。但是,当我将执行时间设置为更大的数字(例如5000毫秒)时,某些请求会失败。执行时间越长,失败次数越多。
我一直在玩Tomcat的线程池配置,但目前为止没有帮助。我为我的Tomcat连接器当前的配置如下:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
<Connector executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="2000000"
acceptCount="50"
redirectPort="8443"/>
可能有人建议我一个解决方案来解决这个问题?
谢谢你的回答。 我也觉得这很奇怪。我已经检查过配置是否有效。 事情是,当我设置Thread.sleep(time)time = 2000时,它可以正常工作,但是当time = 5000时,某些请求会失败。 – trangmx
睡眠时间越长意味着线程被占用的时间越长,因此它们可以服务于其他请求,可能会导致它们超时。如果你真的有50个线程,就不会发生这种情况。所以从外观上看,你的线程少或者超过150个并行请求。也许你可以发布整个server.xml吗?你如何发起请求? – geert3
请在这里查看整个server.xml:[server.xml](https://github.com/trangmx/phdproject/blob/master/Tomcat/conf/server.xml)。 我将应用程序配置为只发送50个并发请求,您可以在此日志文件中看到服务器上的访问日志:[访问日志](https://github.com/trangmx/phdproject/blob/master/Tomcat/ logs/localhost_access_log.2015-09-11.txt) – trangmx