【发布时间】:2017-11-21 07:36:11
【问题描述】:
我们正在使用 Tomcat7 和 Java 7。我们的吞吐量约为 500 req/sec。但是在有多个实例的情况下,单个实例只能处理 20 个请求。
问题在于,单实例响应时间加起来超过 20 个请求。
举个例子:-
***1。如果第一个请求需要:- 5ms (Millisecs)
然后第二个请求需要:- 10ms
第 3 次:- 15ms 等等.......***
我尝试让它保持不变,但它不起作用。
我们尝试了什么:-
1.在Tomcat7中将连接器从BIO更改为NIO。
2. 增加 maxThreads = 1000.
3. 核心数从2核心增加到10核心。
4. 异步 API 实现。
以上都不起作用。
我们想要实现的目标:-
- 我们希望 API 的响应时间保持不变。
- 100 个请求/秒在一个实例中。
----------------------------- ---------------------------------
编辑:-
好的,经过一天的阅读代码和尝试不同的事情。找到了性能低的主要原因。这是由于 InputStream read() 函数阻塞性质。当 java 从 socket 读取 o/p 时。套接字返回输入流中的 o/p。 Inputstream.read() 是 java 中的一种阻塞方法(链接附在下面)。仍然不知道如何解决它。
链接:-http://javarevisited.blogspot.in/2012/02/what-is-blocking-methods-in-java-and.html#axzz4kWX7K7Yc
已经尝试了很多 Java NIO 的方法,但到目前为止没有任何效果。
提前致谢。
【问题讨论】:
标签: java tomcat7 inputstream blocking response-time