当流量很高时,Rest-API的响应时间会增加

时间:2017-06-19 07:28:37

标签: java tomcat7 inputstream blocking response-time

我们正在使用Tomcat7和Java 7.我们的吞吐量大约为500 req / sec。但是有多个实例,单个实例只提供了20个请求。

问题在于单个实例响应时间超过20个请求加起来。

举个例子: -

*** 1。如果第一个请求需要: - 5毫秒(毫秒)

  1. 然后第二个请求需要: - 10ms

  2. 第3名: - 15ms等等....... ***

  3. 我试着让它保持不变但它不起作用。

    我们尝试了什么: - 1.在Tomcat7中将连接器从BIO更改为NIO 2.增加maxThreads = 1000 3.将核心从2个核心增加到10个核心 4.异步API实现。

    以上都没有奏效。

    我们想要实现的目标: -

    1. 我们希望API的响应时间不变。
    2. 单个实例中100 req / sec。
    3. -----------------<> ---------------<> ------- -------------------<> ----<> --------------

      修改: -

      好了一天阅读代码并尝试不同的东西。找到了性能低的主要原因。这是由于InputStream的read()函数阻塞性质。当java从套接字读取o / p时。 Socket返回输入流中的o / p。 Inputstream.read()是java中的阻塞方法(下面附带链接)。仍然不知道如何解决它。

      链接: - http://javarevisited.blogspot.in/2012/02/what-is-blocking-methods-in-java-and.html#axzz4kWX7K7Yc

      尝试了很多Java NIO方法,但到目前为止还没有任何工作。

      提前致谢。

1 个答案:

答案 0 :(得分:1)

查看内存消耗,网络,并可能启动配置文件。 你在运行什么样的硬件? 确保您的java内存参数正确传递给tomcat。 启用垃圾回收日志。

https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/memman.html

CATALINA_OPTS vs JAVA_OPTS - What is the difference?

另外,请描述一下流程,你的tomcat可能没什么不好,例如,如果你使用的数据库限制了X连接,那么你就被数据库所限制了。

最常见的请求是什么?那些要求正在做什么?