我正在开发一个Jersey JAX-RS
用于处理REST
、Shiro
处理身份验证的服务器应用程序,它都在一个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
以确保它不会导致问题。