Appengine - ограничить количество экземпляров

Должна быть опция ограничить определенное количество экземпляров, независимо от того, что. В меню настроек приложения все, что вы можете сделать, это ограничить максимальное количество экземпляров IDLE, что я не уверен, работает ли он по назначению. Я имею в виду, что я установил Max Idle Instances в 1 и Min Pending Latency на 15 секунд, но я все еще вижу два экземпляра, запущенных изредка, в течение длительного периода времени без запросов, Разве они не должны закрываться после 15 минут бездействия? И почему он даже запускает экземпляр секунд с этими настройками, считая, что запрос не задерживался на 15 секунд?

Я запускаю простое приложение "что мой IP" python, который действительно не требует высокой производительности. Я имею в виду, что на самом деле не имеет значения, если ответ после 100 мс или 5 секунд, все, что имеет значение, - это запуск только одного экземпляра, так что эти ежедневные 28 часов экземпляра никогда не заканчиваются.

Ответ 1

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

Я использую F1 Class для установки экземпляра Frontend.
Здесь я код в версии yaml.

instance_class: F1
automatic_scaling:
  max_idle_instances: 1  # default value
  min_pending_latency: automatic  # default value
  max_pending_latency: 30ms

Я использую класс B1 для установки экземпляра Backend.
Здесь я код в версии yaml.

instance_class: B1
basic_scaling:
  max_instances: 1
  idle_timeout: 10m

И вот код, который нужно поместить в appengine.web.xml(если компилировать java с maven)

<threadsafe>true</threadsafe>
<instance-class>B1</instance-class>
<basic-scaling>
<max-instances>1</max-instances>
<idle-timeout>10m</idle-timeout>
</basic-scaling>

Обычно я запускаю 4 модуля, 2 модуля в классе F1 и 2 модуля в классе B1. Они стоили мне 0 ежедневно. Однако, когда мой сайт занят трафиком, я поднимаю класс до F2 и B2, а общая суточная стоимость меньше 0,50 доллара США.

Вот несколько советов по уменьшению оплачиваемого экземпляра:

  • Если ваш модуль класса F работает больше, чем 28 часов бесплатной ежедневной квоты, подумайте о создании другого модуля с класс B. При этом вы получаете еще один 9 бесплатных часов экземпляра. Вы можете использовать его для выполнения любой другой работы, например cron, task или background. Убедитесь, что автоматическое выключение /_ ah/stop работает правильно. Не позволяйте считать длинный простой.
  • Упростите домашнюю страницу или целевую страницу для запуска с минимальным экземпляром. Если возможно, не более одного экземпляра. Пусть он запускается больше экземпляра только тогда, когда ваш посетитель делает что-то на вашей странице. Попробуйте оптимизировать свой сайт, воспользовавшись свободной квотой blobstore, хранилище данных и datastore. Вы также можете использовать script в Google Hosted Libraries, чтобы минимизировать исходящую пропускную способность.
  • Всякий раз, когда запрос трафика отправляется обработчику модуля, он определенно запускает экземпляр. Поэтому, помимо установки статического истечения кеша, рекомендуется, чтобы статические файлы, такие как html, images, js и css, были загружены из вашего ведра с помощью Google Cloud Storage (GCS) клиентская библиотека и gsutil.
    Затем установите его как общедоступный. С помощью этой схемы ваш экземпляр будет значительно уменьшен, так как он не влияет на запрос. Вы можете подумать, что GCS Monthly Pricing намного дешевле по сравнению с ежемесячным счетом, поднятым суммарным кумулятивным значением Часовая стоимость экземпляра.
    Узнайте, как настроить ведро как веб-сайт, используя субдомены (включая www), как описано здесь. Кроме того, если вы хотите использовать пустой домен, вы можете перенаправить его на www установить A (Host) и AAAA, или вы даже можете сделать его полностью независимым, если ваш голый домен можно установить как Alias ​​/AName непосредственно на GCS (c.storage.googleapis.com).
  • Если ваше приложение работает динамически на основе работы с данными, вам необходимо знать, что каждый тип базы данных, например MySQL, облачное хранилище и т.д. также будет запускать экземпляр или счетчик операций. Убедитесь, что вы блокируете нежелательный бот-трафик и не используете им динамическую страницу. Я предлагаю вам также рассмотреть возможность использования Малые операции хранилища данных. Сравните с другими операциями с базой данных, эта операция будет стоить вам бесплатно. Конечно, вам нужно будет оптимизировать свой код, чтобы использовать его как Quercus. Здесь есть приятная дискуссия здесь, здесь и здесь.