Google App Engine - первый запрос медленный - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть вопрос, касающийся Google App Engine.Я знаю, что первый запрос займет больше времени, чем второй из-за масштабирования экземпляров.Но в моем случае разница очень велика.У меня нет ручного масштабирования, только стандартное автоматическое масштабирование, и я хотел бы получить некоторую рекомендацию о том, что я должен делать.

Это мой случай: У меня есть проект AMP (https://amp.dev/) веб-сайта электронной коммерции. Поэтому у меня нет статического URL-адреса, чтобы я мог настроить запрос на разогрев, рекомендованный Google App Engine. URL выглядит следующим образом: amp.store/product/{productname}, поэтому {productname} является динамическим, у меня более 1000 продуктов, и я не могу отправить запрос на эти URL-адреса только для того, чтобы мой экземпляр работал постоянно.

app.yaml:

runtime: php55
api_version: 1
service: amp-page

handlers:
- url: .*
  script: main.php

skip_files:....


Когда я пытаюсь PageSpeed Insights от Google, я получаю эту ошибку с первой попытки:

Lighthouse вернул ошибку: ERRORED_DOCUMENT_REQUEST. Lighthouse не смог надежно загрузить запрошенную страницу. Проверьте, что вы проверяете правильный URLи что сервер правильно отвечает на все запросы. (Код состояния: 500)

Теперь, когда я пытаюсь повторить сразу же после того, как я часто получаю 84/100 (мобильный) 99/100 (рабочий стол) .

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

Спасибо!

enter image description here

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019

Чтобы сохранить хотя бы один экземпляр (даже если трафика нет), вы хотите установить min_instances app.yaml масштабирующий элемент в 1:

min_instances

Дополнительно. Минимальное количество экземпляров, которое App Engine создает для эта версия модуля. Эти экземпляры обслуживают трафик при запросах прибыть и продолжать обслуживать трафик даже при наличии дополнительных экземпляров запускаются по мере необходимости для обработки трафика.

Укажите значение от 0 до 1000. Вы можете установить для параметра значение 0, чтобы разрешить масштабирование до 0 экземпляров, чтобы снизить затраты, когда нет запросов обслуживается Обратите внимание, что вы платите за количество экземпляров указано, получают ли они трафик или нет.

Важно : Если вы используете appcfg из SDK App Engine для PHP для развертывания, вы не можете использовать этот параметр в вашем app.yaml . Вместо, установите параметр, как описано в Настройка параметров автоматического масштабирования в API Explorer или с помощью API администратора App Engine .

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

Примечание: вы также можете настроить запросы на прогрев (создание их URL - это часть, а не произвольный статический URL), чтобы еще больше снизить вероятность того, что пользовательские запросы станут запросами на загрузку. Вы не можете устранить их полностью - экземпляры не живут вечно, а запросы на разогрев не эффективны на 100%, это всего лишь лучшее решение.

1 голос
/ 17 апреля 2019

Одним из вариантов будет создание задания cron через ваш файл cron.yaml, который будет запрашивать известную страницу каждые X минут, чтобы гарантировать, что у вас всегда работает один экземпляр.

Создайте в вашем приложении один обработчик, который выполняет скрипт php и возвращает какой-то вывод.Что-то, что не тяжело базы данных.Может быть так же просто, как эхо "ОК";

...