Java 高流量时Rest API的响应时间增加
我们将Tomcat7与Java7一起使用。我们的吞吐量约为500请求/秒。但由于有多个实例,单个实例只处理20个请求 问题在于,单实例响应时间加起来超过20个请求 例如: ***一,。如果第一次请求需要:-5毫秒(毫秒)Java 高流量时Rest API的响应时间增加,java,tomcat7,inputstream,blocking,response-time,Java,Tomcat7,Inputstream,Blocking,Response Time,我们将Tomcat7与Java7一起使用。我们的吞吐量约为500请求/秒。但由于有多个实例,单个实例只处理20个请求 问题在于,单实例响应时间加起来超过20个请求 例如: ***一,。如果第一次请求需要:-5毫秒(毫秒) 然后第二个请求需要:-10毫秒 第三:15毫秒等*** 我试着让它保持不变,但不起作用 我们尝试了什么:- 1.在Tomcat7中将连接器从BIO更换为NIO。 2.增加maxThreads=1000。 3.将核数从2核增加到10核。 4.异步API实现 上述措施都不起作用 我
1.在Tomcat7中将连接器从BIO更换为NIO。
2.增加maxThreads=1000。
3.将核数从2核增加到10核。
4.异步API实现 上述措施都不起作用 我们希望达到的目标:
提前谢谢 查看内存消耗、联网情况,或许可以创建一个配置文件。 您运行的是哪种硬件? 确保java内存参数正确地传递给tomcat。 启用垃圾收集日志 另外,请描述一下流程,您的tomcat可能没有什么不好的地方,例如,如果您使用的数据库限制为X个连接,那么您将被数据库拖累
最常见的请求是什么?这些请求在做什么?你好,gba,谢谢你的回复。在此过程中,我们没有使用任何数据库(DB)。程序流程是:-nginx接受请求(端口80)--->tomcat7(端口8080)(NIO连接器)--->Unix套接字(在本地主机上运行)大约需要20到30毫秒来响应1个请求)--->返回结果。我们已经注意到,从unix套接字读取请求,即Inputstream(是增加响应时间的主要原因。但是如何避免使用Inputstream(我不知道)。如果我们必须使用input stream,那么如何使它避免花费这么多时间。)。谢谢,DiptenduHi gba,其他统计数据:-一台机器上20个连接的内存消耗几乎为30%(最大值)。硬件:-单实例2核,8 GB Ram。我们正在通过Tomcat7下的setenv.sh文件传递Java参数。向服务器发出的请求获取一行数据,并使用unix套接字(在套接字中,我们一直运行Python程序)处理它,然后返回给客户端一行json数据。我仍然不确定流程是什么,请详细说明从tomcat收到调用到它返回响应的整个过程。此外,请检查您的配置以了解nginx和tomcat中的连接限制。Hi-gba,nginx设置为连接到2000个连接,tomcat maxthreads=1000。请查看其中的maxConnections参数,它与max threads不同。此外,我还需要对流程进行更详细的解释,以帮助您解决问题。我不明白API在做什么。有同步的东西吗?