【问题标题】:Response time increases of Rest-API when there is high traffic高流量时 Rest-API 的响应时间增加
【发布时间】:2017-11-21 07:36:11
【问题描述】:

我们正在使用 Tomcat7 和 Java 7。我们的吞吐量约为 500 req/sec。但是在有多个实例的情况下,单个实例只能处理 20 个请求。

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

举个例子:-

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

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

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

我尝试让它保持不变,但它不起作用。

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

以上都不起作用。

我们想要实现的目标:-

  1. 我们希望 API 的响应时间保持不变。
  2. 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


    【解决方案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个连接,那么你就是被数据库控制了。

    最常见的请求是什么?这些请求在做什么?

    【讨论】:

    • 您好 gba,感谢您的回复。我们在此过程中没有使用任何数据库(DB)。程序流程是: - nginx 接受请求(端口 80)---> Tomcat 7(端口 8080)(NIO 连接器)---> Unix 套接字((在本地主机上运行)占用大约 20 毫秒到 30 毫秒响应对于 1 个请求)-> 返回结果。 我们注意到从unix socket ie Inputstream 读取请求(是增加响应时间的罪魁祸首。但是如何避免使用inputstream(我不知道)。如果我们必须使用输入流那么如何制作它避免花费太多时间。)。谢谢,Diptendu
    • 嗨 gba,其他统计数据: - 一台机器的 20 个连接的内存消耗几乎是 30%(最大值)。硬件: - 单实例 2 核,8 GB 内存。我们通过 Tomcat7 下的 setenv.sh 文件传递​​ Java 参数。向服务器发出的请求使用 unix Socket 处理一行数据(在 socket 内部,我们一直在运行 Python 程序),然后用一行 json 数据返回给客户端。
    • 我仍然不确定流程是什么,请详细说明从tomcat收到调用到它返回响应时发生的情况。此外,请检查您的配置以了解 nginx 和 tomcat 中的连接限制。
    • 嗨 gba,nginx 设置为连接 2000 个连接,tomcat maxthreads = 1000。
    • 查看tomcat.apache.org/tomcat-7.0-doc/config/http.html 中的maxConnections 参数,它与最大线程数不同。另外,我仍然需要对流程进行更详细的解释来帮助您。我不明白 API 在做什么。你有什么同步的吗?
    猜你喜欢
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多