Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat第一个请求的高延迟_Java_Http_Tcp_Tomcat7_Keep Alive - Fatal编程技术网

Java Tomcat第一个请求的高延迟

Java Tomcat第一个请求的高延迟,java,http,tcp,tomcat7,keep-alive,Java,Http,Tcp,Tomcat7,Keep Alive,我们有一个使用嵌入式tomcat版本7.0.32的应用程序。我观察到一个关于延迟的特殊情况 我正在对应用程序进行一些负载测试,我所观察到的是,对tomcat的第一个请求需要相当长的时间,例如,速率约为300+毫秒。后续请求大约需要10-15毫秒 我用的是生物连接器。我知道之所以使用持久连接,是因为我使用的是HTTP 1.1,默认情况下HTTP 1.1支持持久连接。因此,理想情况下,只创建1个TCP连接,并将所有请求推送到同一个连接上,直到保持活动超时结束 我得到的结论是,创建TCP连接将涉及一些

我们有一个使用嵌入式tomcat版本7.0.32的应用程序。我观察到一个关于延迟的特殊情况

我正在对应用程序进行一些负载测试,我所观察到的是,对tomcat的第一个请求需要相当长的时间,例如,速率约为300+毫秒。后续请求大约需要10-15毫秒

我用的是生物连接器。我知道之所以使用持久连接,是因为我使用的是HTTP 1.1,默认情况下HTTP 1.1支持持久连接。因此,理想情况下,只创建1个TCP连接,并将所有请求推送到同一个连接上,直到保持活动超时结束

我得到的结论是,创建TCP连接将涉及一些成本,但差别很大

知道是什么导致了第一次请求和后续请求之间的延迟出现如此巨大的差异吗?我们能做些什么来减少/消除它吗

谢谢


Vikram

如果您使用的是JSP,则会编译它们

如果要连接到数据库,则连接池以前可能为空。 一般来说,如果您的单例是延迟初始化的,那么第一个请求必须等待

最重要的是,JIT发挥了它的作用:因此在第一个请求之后,JIT可能已经应用了一些优化

如果是负载测试(或性能测试),我将忽略第一个请求/运行,因为这仍然是“预热”阶段

更新


您可能会发现关于一个有趣的问题的信息。

第一个请求是什么。是否正在尝试加载页面或进行任何身份验证或授权?或者可能是JSP被编译成servlet,而servlet被编译成.class文件?您可以预编译JSP并查看它是否消失。不使用JSP,只使用普通http servlet。也没有数据库调用。只需一个包含JSON数据的简单post,servlet就会读取数据并用相同的请求数据进行响应。它是一个包含JSON数据的简单http post。出于测试目的,我只是读取数据并将相同的数据作为响应的一部分发送回去。