0

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

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

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

我知道创建 TCP 连接会涉及一些成本,但差异很大。

知道什么可能导致第一个请求和后续请求之间的延迟存在巨大差异,我们可以做任何事情来减少/消除它。

谢谢,

维克拉姆

4

1 回答 1

0

如果您正在使用 JSP,它们会被编译。

如果您正在连接到数据库,则连接池之前可能是空的。一般来说,如果你有延迟初始化的单例,第一个请求必须等待。

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

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

更新

您可能会发现有关微基准测试的信息很有趣。

于 2013-06-26T13:01:35.967 回答