Я работаю над приложением Spring Boot в Google App Engine.
Я заметил, что мое приложение Spring Boot, похоже, запускает несколько копий, когда я запускаю его в dev (загрузка бинов дважды, показываяВесной ascii art дважды в логах и тд).Сначала я изучил это, потому что сеансы казались странными - установите значение для сеанса, и получение его при следующем запросе иногда дает значение, отличное от того, которое я установил.
После большого количества копаний,Я понял, что это произошло, когда я установил следующее в appengine-web.xml
:
<manual-scaling>
<instances>1</instances>
</manual-scaling>
. Я подумал, что ручное масштабирование и установка экземпляров в явном виде 1 просто обеспечит запуск только одной копии, но, по крайней мере, вdev, кажется, также вызывает это неожиданное поведение загрузки бинов несколько раз и т. д.
Поведение является простым для воспроизведения.Я разветвился https://github.com/GoogleCloudPlatform/getting-started-java и добавил вышеуказанный конфиг к примеру appengine-standard-java8 / springboot-appengine-standard в этой ветке: https://github.com/davecahill/getting-started-java/tree/spring-starts-twice
Изучив эту ветку, перейдите к appengine-standard-java8/springboot-appengine-standard
каталог и запуск mvn appengine:run
, вы можете наблюдать поведение, которое я описываю.
Мне интересно знать, почему настройка ручного масштабирования вызывает такое изменение поведения в среде dev.