我们正在使用Tomcat7和Java 7.我们的吞吐量大约为500 req / sec。但是有多个实例,单个实例只提供了20个请求。
问题在于单个实例响应时间超过20个请求加起来。
举个例子: -
*** 1。如果第一个请求需要: - 5毫秒(毫秒)
然后第二个请求需要: - 10ms
第3名: - 15ms等等....... ***
我试着让它保持不变但它不起作用。
我们尝试了什么: - 1.在Tomcat7中将连接器从BIO更改为NIO 2.增加maxThreads = 1000 3.将核心从2个核心增加到10个核心 4.异步API实现。
以上都没有奏效。
我们想要实现的目标: -
-----------------<> ---------------<> ------- -------------------<> ----<> --------------
修改: -
好了一天阅读代码并尝试不同的东西。找到了性能低的主要原因。这是由于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方法,但到目前为止还没有任何工作。
提前致谢。
答案 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连接,那么你就被数据库所限制了。
最常见的请求是什么?那些要求正在做什么?