Так что после некоторого исследования я мог бы помочь вашей проблеме.
Я также заметил, что проверка работоспособности часто вызывается, хотя в стандартной настройке проверки работоспособности указано, что она должна составлять 5 минут и несколько неудачных последовательных проверок работоспособности в конфигурации приложения Google gam yaml. Но я никогда не вижу неудачных проверок работоспособности в журналах.
Это нормальное поведение из-за избыточных проверок работоспособности Google:
" Частота проверки здоровья
Для обеспечения высокой доступности App Engine создает избыточные копии каждой проверки работоспособности. Если проверка работоспособности завершается неудачно, избыточная проверка может быть выполнена без задержки.
Если вы изучите журналы nginx.health_check для своего приложения, вы можете увидеть, что опрос проверки работоспособности происходит чаще, чем вы настроили, из-за избыточных проверок работоспособности, которые также следуют вашим настройкам. Эти избыточные проверки работоспособности создаются автоматически, и вы не можете их настроить. "
У меня есть несколько сервисов Spring Boot, которые отлично работают локально, но перезапускаются через произвольное время в Google App Engine Flexible. Эти сервисы используют Google Cloud SQL и Pub / Sub с помощью библиотек Spring Boot.
Когда я развертываю сервисы, они работают нормально, но через некоторое время они перезапускаются App Engine. Я подключил их к экземпляру администратора Spring Boot, и я не вижу ничего странного в куче, на диске или в любом другом месте. Иногда они перезагружаются через несколько часов, иногда быстрее.
Если посмотреть, как GAE управляет экземплярами, это может быть нормальным поведением, пока ваше приложение продолжает отвечать на запросы. Используя automatic_scaling
, вы определяете динамические экземпляры. Динамические экземпляры включаются / выключаются в зависимости от нагрузки, которую они получают. Итак, вы можете увидеть автоматическое масштабирование на работе. Переход к 2 экземплярам, затем обратно к одному и т. Д.
Я бы предложил вам проверить это, либо увеличив пороговое значение по умолчанию target_utilization
до значения, подобного 0.9
, и посмотреть, будет ли оно часто масштабироваться. Или просто используйте manual_scaling
, чтобы у вас были только резидентные экземпляры. Причина тестирования с этим состоит в том, что журналы, которые вы видите, могут быть ожидаемым поведением управления экземпляром ядра приложения. так как ваше приложение отвечает на все проверки работоспособности и готовности, и вы упоминаете, что использование памяти не показывает ничего сверх нормы, то я не могу думать ни о чем другом, что могло бы вызывать это, кроме функции автоматического масштабирования.
Надеюсь, это поможет!
Источники:
https://cloud.google.com/appengine/docs/flexible/java/reference/app-yaml
https://cloud.google.com/appengine/docs/flexible/custom-runtimes/configuring-your-app-with-app-yaml
https://cloud.google.com/appengine/docs/flexible/java/how-instances-are-managed