如何配置用于Jersey REST调用的最大并发线程数?

时间:2013-08-20 21:44:54

标签: java tomcat jersey jax-rs shiro

我正在使用Jersey JAX-RS来处理RESTShiro来处理身份验证的服务器应用程序,并且它都在Tomcat实例上运行。

我遇到的问题是REST调用似乎是串行处理的(或者至少只有少量的同步线程)。

我在NodeJS中编写了一个小测试,在大约5秒钟内将大约80个用户记录到服务器中。我发现每个用户的响应时间越来越长。这是我的输出:

Login completed in 3256 ms
Login completed in 3752 ms
Login completed in 3830 ms
Login completed in 3957 ms
Login completed in 4304 ms
Login completed in 4528 ms
Login completed in 4724 ms
Login completed in 4814 ms
Login completed in 5072 ms
Login completed in 5171 ms

...删除了一些,你明白了

Login completed in 25337 ms
Login completed in 26364 ms
Login completed in 26738 ms
Login completed in 27114 ms
Login completed in 27266 ms
Login completed in 27337 ms
Login completed in 27847 ms
Login completed in 28365 ms
Login completed in 28571 ms
Login completed in 32358 ms

登录调用会执行某些数据库工作,然后返回。有趣的是,我还要在服务器端计时,而始终报告的登录时间大约为3s - 6s。

这告诉我,请求在他们遇到我的代码之前就在某个地方。我已经读过Jersey应该为每个请求启动一个新线程,但是我有最大限度的打击吗?如果是这样,我该如何增加/配置它?或者这是Tomcat配置问题吗?

我已禁用Shiro以确保它不会导致问题。

1 个答案:

答案 0 :(得分:1)

傻傻的我。排队实际上发生在Node方面。我错误地认为Node会自动并行发送每个请求,但我必须增加maxSockets值以使其正常工作(请参阅Nodejs Max Socket Pooling Settings)。