我们有一个 spring MVC 项目(真的是一个又大又旧的整体),我们目前部署在 Tomcat 服务器上。现在我正在尝试使用嵌入式 Jetty 而不是 tomcat(除了 Jetty 更改之外没有其他代码更改)
搬到码头后,第一个请求或长时间没有负载的请求响应时间过长,通常会超时。
第一次请求的码头响应时间约为。 2 秒(根据进一步的请求减少)
其中 tomcat 需要大约。第一个请求 300 毫秒
还有负载测试(每秒 100 个请求), jetty 的系统负载峰值,因此 CPU 利用率在前几秒达到 60% 到 65%,然后下降到 30%
而 tomcat 能够优雅地承担负载,它始终保持 30% 的 CPU 使用率。
我正在使用
ServerConnector
作为连接器 & queuedThreadPool with min: 50 , max:500 , queuesize: 6000
尝试过不同的池,队列大小,但没有运气
我可以改变什么来摆脱这种行为吗?
我正在使用码头
9.4.48.v20220622
我的 Jetty 代码
final String WEBAPP_RESOURCES_LOCATION = "webapp";
WebAppContext context = new WebAppContext();
context.setContextPath("/");
URL webAppDir = Thread.currentThread().getContextClassLoader().getResource(WEBAPP_RESOURCES_LOCATION);
if (webAppDir == null) {
throw new RuntimeException(String.format("No %s directory was found into the jar file", WEBAPP_RESOURCES_LOCATION));
}
context.setResourceBase(webAppDir.toURI().toString());
context.setParentLoaderPriority(true);
ThreadPool jettyThreadPool = new QueuedThreadPool(50,200);
....