【发布时间】:2016-12-25 16:59:01
【问题描述】:
我们的网络应用程序的吞吐量似乎受到慢速连接的限制。在负载测试中,我们轻松实现了大约 5000 个请求/秒。但在实践中,我们的最大请求速度约为 1000 个请求/秒。服务器并没有真正承受严重的负载,无论是 IO 还是 CPU 方面。这同样适用于数据库。主要区别似乎是大多数工作线程会因无法足够快地接受响应的客户端(通常响应大小为几 MB)而减慢。
我们几乎没有任何静态资源。问题在于动态生成的内容。它是用 Spring 框架实现的。但我认为对于任何其他基于 servlet 的实现来说都不会有所不同。
那么我们有哪些提高吞吐量的选择?是否有某种可用的缓存可以快速吸收响应,释放工作线程,然后以它们的速度异步将其交付给客户端?
我们不希望增加处理线程的数量,因为它们会在大部分处理过程中保持数据库连接打开。我们确实在寻找一种可以让少量工作线程全速工作的解决方案。
【问题讨论】:
-
感谢您的提示。是的,启用缓冲的 nginx 反向代理似乎是我们正在寻找的。我们需要一些时间来配置它并验证它在现实环境中增加了我们的吞吐量。
标签: java tomcat servlets tomcat8