запуск весенней загрузки с vaadin занимает несколько минут

#spring-boot #vaadin #vaadin-flow

Вопрос:

Я знаю, что было несколько сообщений об этом, и я попробовал несколько решений, которые, казалось, немного улучшили ситуацию, но я все еще испытываю необычайно длительный запуск на своей машине.

Я использую spring-boot 2.4.4 и vaadin 14.3.9 для разработки своего интерфейса в STS 4.10 в Windows 10. Я компилирую с помощью Java 11. Включив отладку в своих свойствах, я вижу огромный промежуток примерно в 5 минут между «Отображением сервлетов» и «Запуском компиляции интерфейса».

 11:54:30.236 [restartedMain] INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http)
11:54:31.171 [restartedMain] DEBUG o.s.b.w.s.c.ServletWebServerApplicationContext - Published root WebApplicationContext as ServletContext attribute with name [org.springframework.web.context.WebApplicationContext.ROOT]
11:54:31.172 [restartedMain] INFO  o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 6870 ms
11:54:52.463 [restartedMain] DEBUG o.s.b.w.s.ServletContextInitializerBeans - Mapping filters: filterRegistrationBean urls=[/*] order=-2147483647, springSecurityFilterChain urls=[/*] order=-100, characterEncodingFilter urls=[/*] order=-2147483648, formContentFilter urls=[/*] order=-9900, requestContextFilter urls=[/*] order=-105, cacheCleanupFilter urls=[/*] order=2147483647, getBasicAuthFilter urls=[/*] order=2147483647, getFormAuthFilter urls=[/*] order=2147483647, loggingFilter urls=[/*] order=2147483647
11:54:52.464 [restartedMain] DEBUG o.s.b.w.s.ServletContextInitializerBeans - Mapping servlets: dispatcherServlet urls=[/], springServlet urls=[/vaadinServlet/*]
[38;5;35m
------------------ Starting Frontend compilation. ------------------
[0m[94mVaadin application has been deployed and started to the context path "/".
[0m11:59:07.893 [restartedMain] DEBUG o.s.b.a.m.w.s.WebMvcMetricsFilter - Filter 'webMvcMetricsFilter' configured for use
 

так что я понятия не имею, что происходит между ними. Я предполагаю, что это может быть ваадин, творящий какую-то свою магию, но я не могу быть уверен.

Я бы хотел вставить вывод для автоматической настройки здесь, но, к сожалению, это заставило бы меня превысить ограничение в 30 тысяч символов (Тело ограничено 30000 символами; вы ввели 122954). Есть ли лучший способ вставить его или есть определенные его части, которые могут представлять для вас ценность?

В свойствах моего приложения (yml) Я также внес в белый список свой пакет представлений для vaadin, и в своем файле windows hosts я раскомментировал строки разрешения локального хоста, но я не уверен, что это имеет какое-либо влияние

 vaadin:
  whitelisted-packages:
  - xx/path/to/view
 

Кроме того, я только что обновился до новейшей версии STS (см. Выше) и создал новое рабочее пространство, чтобы убедиться, что причина не в этом.

Не знаю, с чего начать поиски и как узнать, что именно происходит за эти 5 минут. Может быть, вы поможете мне найти решение. заранее спасибо

Комментарии:

1. Примерно в этот момент dev-сервер загружает узлы deps и запускает webpack и все такое. Можете ли вы исключить, что проблем с сетями нет? Быстро ли идет второй пробег? Есть ли node_модули с большим количеством вещей в них? Находится ли проект на локальном твердотельном накопителе с приличной файловой системой? Вы запускаете этот собственный или с помощью WSL?

2. Вы используете пружинную загрузку. Вы запускаете приложение как WAR на сервере Tomcat?

3. @cfrick Привет и спасибо, у меня здесь довольно стабильная сеть, но проблема возникла в нескольких сетях, а также когда я отключен. есть ли тест, который я могу провести, чтобы быть уверенным? второй запуск (простой перезапуск моего приложения spring boot в sts) имеет ту же проблему. в папке node_modules (569) есть довольно много записей, но она загружена vaadin. я уже один раз очистил дирекцию своего проекта без каких-либо изменений. у меня есть ssd-накопитель, и я запускаю проект изначально из STS (запускаю как приложение, а также запускаю как приложение spring boot). хотя у меня есть wsl для docker, но я не настраивал его явно для отладки в sts

4. Вы можете попробовать отладить приложение и нажать «пауза» в течение 5 минут, когда, кажется, ничего не происходит. Убедитесь, что все потоки приостановлены. Затем попробуйте найти подозрительный поток, проверив следы стека. Вы также можете попытаться увеличить уровень журнала для ОТСЛЕЖИВАНИЯ и посмотреть, есть ли в промежутке в 5 минут какие-либо журналы.

5. Можете ли вы создать производственную сборку и посмотреть, займет ли это столько же времени? Сборка prod делает почти то же самое (собирает deps, запускает webpack для создания некоторых артефактов) за вычетом запуска сервера на локальном хосте для горячей перезагрузки. Исключив, что ваша машина просто замедляется, я бы предположил, что что-то выходит из строя, и это может быть просто узловой материал, который запускается. Если вы легко можете проверить свой ввод-вывод (сеть и диск) и свой процессор в промежутке: если ничего не происходит, что-то ждет). Также вы пробовали работать с новым стартовым проектом?

Ответ №1:

Это известная проблема в версиях Vaadin до 14.4.0. В версии 14.4.0 новее проблема должна была быть исправлена.

Комментарии:

1. эй, спасибо за ваш ответ. я постараюсь обновить ваадин. я некоторое время работал в vaadin 14.4, но мне пришлось понизить рейтинг до 14.3.9, потому что я испытал некоторые падения сеанса в сочетании с WebComponentExporter (вызов vaadin через jsp) или даже с использованием vaadin в iframe. странно то, что у меня есть еще одна страница в этой настройке, где сеанс не прерывался, но я не мог найти причину разницы между этими двумя. в любом случае я попробую 14.4

2. я обновился до 14.5.1, и для его запуска все еще требуется 5-10 минут. затем я удалил свою конфигурацию обратного входа, потому что у меня было ощущение, что конфигурация показала мне не все, и она показала следующее: VaadinServletContextInitializer : Поиск подклассов и классов с аннотациями занял 323 секунды. Правильно ли использование свойства белого списка в моем исходном сообщении? согласно github.com/vaadin/spring/issues/571 это должно быть решением

Ответ №2:

В то время как в более старой версии vaadin была эта проблема, обновление не решило ее для меня. проблема на самом деле была на виду, и проблема с конфигурацией.

Используя формат yaml в своих свойствах, я изначально настроил белый список следующим образом:

 vaadin:
  whitelisted-packages:
  - xx/path/to/view
 

этот формат был предоставлен мне завершением кода eclipse, но это неправильно, или, по крайней мере, ваадин не принимает его таким образом. правильный формат для vaadin был бы таким:

 vaadin:
  whitelisted-packages: xx/path/to/view
 

с несколькими пакетами, очевидно, разделенными запятыми.
Теперь мой проект начнется через несколько секунд.

спасибо всем, кто прокомментировал и помог мне проанализировать это.