java - 高流量时 Rest-API 响应时间增加

标签 java tomcat7 inputstream blocking response-time

我们使用 Tomcat7 和 Java 7。我们获得的吞吐量约为 500 请求/秒。但在多个实例到位的情况下,单个实例只能处理 20 个请求。

问题在于单实例响应时间累计超过 20 个请求。

举个例子:-

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

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

  • 第三:- 15ms 等等.......***

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

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

    以上方法均无效。

    我们想要实现的目标:-

    1. 我们希望 API 具有恒定的响应时间。
    2. 单个实例中每秒 100 个请求。

    -----------------<>--------------<>--------- ---------------<>----<>--------------

    编辑:-

    好的,经过一天的阅读代码并尝试不同的事情之后。找到了性能低下的主要原因。这是由于 InputStream read() 函数的阻塞性质造成的。当java从socket读取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的方法,但到目前为止都没有效果。

    提前致谢。

    最佳答案

    查看内存消耗、网络,也许还可以启动一个配置文件。 您在什么样的硬件上运行? 确保您的 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连接,那么你就被数据库拖慢了。

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

    关于java - 高流量时 Rest-API 响应时间增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44624581/

    相关文章:

    java - 整数的罗马表示

    java - JPQL 使用日期时间的日期部分查询实体的 java.util.Date 字段

    java - ClassNotFoundException : javax. 验证.ValidatorFactory

    tomcat - 错误 : transport error 202: bind failed when starting Tomcat 7 in debug mode

    java - 在java中复制文本文件

    java - getInputStream() 源代码

    c++ - 两个不同流的通用函数

    java - 合并排序未给出正确的输出

    java - 有没有办法在提交到 Git 之前强制执行 IntelliJ 代码样式格式?

    eclipse - Tomcat 启动失败并出现 ClassNotFoundException