我们的Web应用程序的吞吐量似乎受到慢速连接的限制。在负载测试中,我们轻松实现约5000个请求/秒。但实际上,我们最多可以达到1000个请求/秒。服务器实际上并没有严重负载,无论是IO还是CPU。这同样适用于数据库。主要区别似乎是大多数工作线程被无法足够快地接受响应的客户端放慢速度(通常响应的大小为几MB)。
我们几乎没有任何静态资源。问题在于动态生成的内容。它是用Spring Framework实现的。但我认为对于任何其他基于servlet的实现都不会有所不同。
那么我们提高吞吐量的选择是什么?是否有某种缓存可以快速吸收响应,释放工作线程然后以其速度异步传递给客户端?
我们宁愿不增加处理线程的数量,因为它们为大多数处理保持数据库连接打开。我们正在寻找一种解决方案,其中少量工作线程可以全速工作。
答案 0 :(得分:0)
我建议您使用标准技术,例如gzip作为响应。
第二个是在Spring MVC中使用异步处理。请参阅Making a Controller Method Asynchronous以了解详情。