在提供并发请求时,Tomcat遇到以下问题:
我创建了一个模拟Web服务,我使用Thread.sleep(time)来定义模拟服务的执行时间。我将此服务部署到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"/>
有人可以建议我解决这个问题吗?
答案 0 :(得分:0)
奇怪,因为你有足够的并发线程(maxThreads=150
)来同时处理50个请求。然而,Executor可以与其他连接器共享,因此线程在其他地方使用的可能性很小?
我更有可能说这应该有效,也许上面的配置还没有激活。如果您在Eclipse中更改了此项,那么您是否进行了“发布”(在服务器视图中,右键单击tomcat服务器并选择“发布”)?然后重启tomcat。