Вам необходимо точно настроить стратегию масштабирования App Engine, например, проверьте этот app.yaml
файл
runtime: nodejs10
env: standard
instance_class: F2
handlers:
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
automatic_scaling:
min_instances: 1
max_instances: 4
min_idle_instances: 1
max_concurrent_requests: 25
target_throughput_utilization: 0.8
inbound_services:
- warmup
min_instances
и min_idle_instances
установлены на 1, чтобы иметь почти 1 экземпляр готов к входящим запросам и избегает холодного запуска.
Чтобы не запускать новые экземпляры слишком быстро, вы можете установить max_concurrent_requests
& target_throughput_utilization
, в этом примере новый экземпляр будет раскручиваться, пока экземпляр не достигнет 20 одновременные запросы (25 X 0.8)
Как указано в этом документе , необходимо создать конечную точку разминки в вашем приложении и добавить inbound_services
в ваше приложение .yaml файл, например:
app.get('/_ah/warmup', (req, res) => {
// Handle your warmup logic. Initiate db connection, etc.
});
вызовы разминки несут преимущество подготовки ваших экземпляров перед входящим запросом и уменьшения задержки первого запроса.