Я испытываю ту же проблему с Spring Boot 1.5.14.RELEASE.
Мне удалось воспроизвести проблему с помощью настраиваемого режима регулирования (20 КБ / с) в Chrome.Когда я загружаю большое изображение (8 МБ), я получаю тайм-аут через 30 секунд.
Обратите внимание, что я делаю загрузку через ajax, используя Dropbox.
Я немного исследовал и увидел, чтоTomcat Connector
имеет значение по умолчанию для времени ожидания асинхронных запросов:
/**
* Default timeout for asynchronous requests (ms).
*/
protected long asyncTimeout = 30000;
Я попытался увеличить этот предел, используя свойство, которое предоставляет Spring Boot:
# SPRING MVC (WebMvcProperties)
spring.mvc.async.request-timeout= # Amount of time before asynchronous request handling times out.
К сожалению, в моемдело, которое не сработало.Поэтому я попытался настроить время ожидания программно:
@Configuration
public class ServerConfiguration {
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
connector.setAsyncTimeout(60000);
connector.getExecutorName();
}
});
return factory;
}
}
Это не сработало, но я уверен, что это проблема.Я видел других людей, которые настроили тайм-аут Connector таким образом, и он работал для них ...
Я до сих пор не представляю, почему в моем случае значение по умолчанию все еще используется.Попробуйте и скажите мне, как все прошло, пожалуйста.
Обновление
Я разобрался, что происходит.Оказывается, что у Dropzone был тайм-аут.
https://www.dropzonejs.com/#config-timeout
Я установил на это значение, которое хотел, и все работало нормально.
Spring boot устанавливал значениеимущества:
spring.mvc.async.request-timeout= # Amount of time before asynchronous request handling times out.
отлично.