Задержка при первом использовании APIJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Задержка при первом использовании API

Сообщение Anonymous »

У меня есть API под управлением Spring Boot 3.4.5 и Java 21. Проблема в том, что ответ на первый вызов API занимает 5–6 секунд, а если API не используется в течение длительного времени, повторный ответ также занимает 5–6 секунд. В противном случае ответ займет менее 1 секунды.
Задержка значительна в части веб-клиента, но если я использую клиент непосредственно в Postman, ответ займет не более 1 секунды.
package com.bum.srvapivalidatesender.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.netty.http.client.HttpClient;
import reactor.netty.http.HttpProtocol;
import reactor.netty.resources.ConnectionProvider;
import java.time.Duration;

@Configuration
public class WebClientConfig {

private EnvironmentPropertyConfig environmentPropertyConfig;

public WebClientConfig(EnvironmentPropertyConfig environmentPropertyConfig){
this.environmentPropertyConfig = environmentPropertyConfig;
}

@Bean
public WebClient.Builder webClientBuilder() {
ConnectionProvider connectionProvider = ConnectionProvider.builder("custom-pool")
.maxConnections(50)
.pendingAcquireMaxCount(100)
.pendingAcquireTimeout(Duration.ofSeconds(3))
.maxIdleTime(Duration.ofSeconds(20))
.maxLifeTime(Duration.ofMinutes(5))
.evictInBackground(Duration.ofSeconds(30))
.build();

HttpClient httpClient = HttpClient.create(connectionProvider)
.protocol(HttpProtocol.H2, HttpProtocol.HTTP11)
.compress(true)
.responseTimeout(Duration.ofMillis(Long.parseLong(environmentPropertyConfig.getTimeout())))
.option(io.netty.channel.ChannelOption.CONNECT_TIMEOUT_MILLIS, Integer.parseInt(environmentPropertyConfig.getTimeout()))
.option(io.netty.channel.ChannelOption.SO_KEEPALIVE, true)
.option(io.netty.channel.ChannelOption.TCP_NODELAY, true);

return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient));
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... onsumption
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»