2013-08-07 3 views
12

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

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

+1

вы пытались использовать новые модули конфиги: https://developers.google.com/appengine/docs/python/modules/#config – Faisal

+0

Нет, у меня нет, но я дам ему пытаться. Благодаря! – Chris

+1

«Класс экземпляра F1 разрешен только с« автоматическим »значением масштабирования». Bummers, вы можете использовать Backends для ручного масштабирования, который ограничен 8 часами. : | – Chris

ответ

13

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

Я использую класс F1 для установки экземпляра 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 

А вот код, чтобы положить в appeengine.web.xml (если компиляции Java с мавена)

<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 hours free daily quota, рассмотреть, чтобы создать еще один модуль с Class B. При этом вы получаете еще 9 free instance hours. Вы можете использовать его для выполнения любых других заданий, таких как cron, task или background. Убедитесь, что автоматическое отключение /_ah/stop работает правильно. Не позволяйте считать длинный простой.
  • Упростите свою домашнюю страницу или целевую страницу для запуска с минимальным экземпляром. Если возможно, не более одного экземпляра. Пусть он запускается больше экземпляра только тогда, когда ваш посетитель делает что-то на вашей странице. Рассмотрим, чтобы оптимизировать ваш сайт на бесплатном квоту blobstore, data storage и datastore. Вы также можете использовать сценарий на Google Hosted Libraries для минимизации исходящей полосы пропускания.
  • Всякий раз, когда запрос трафика отправляется обработчику модуля, он определенно запускает экземпляр.Поэтому, помимо установки static cache expiration, рекомендуется использовать статические файлы, такие как html, images, js и css, с помощью Google Cloud Storage (GCS) client library и gsutil.
    Установите его тогда как public-read. С помощью этой схемы ваш экземпляр будет значительно уменьшен, так как он не влияет на запрос. Вы можете подумать, что GCS Monthly Pricing намного дешевле, чем ежемесячный счет, взимаемый суммарной суммой Hourly Instance Cost.
    Узнайте, как настроить ведро в качестве веб-сайта с использованием 0дометов (включая www), как описано here. Кроме того, если вы хотите использовать пустой домен , вы можете перенаправить его на www set A (Host) и AAAA, или вы даже можете сделать его полностью независимым, если ваш голый домен можно установить как Alias/AName непосредственно на GCS (c.storage.googleapis.com).
  • Если ваше приложение работает динамически на основе операции с данными, вам необходимо знать, что каждый тип базы данных, такой как MySQL, Cloud Storage и т. Д. Также запускают экземпляр или счетчик операций. Убедитесь, что вы блокируете нежелательный бот-трафик и не используете им динамическую страницу. Я предлагаю вам также рассмотреть возможность использования "Datastore Small Operations". Сравните с другими операциями с базой данных, эта операция будет стоить вам бесплатно. Конечно, вам нужно будет оптимизировать свой код, чтобы использовать его как Quercus. Есть несколько приятных дискуссий на нем here, here и here.
+0

Метод, описанный в вашей последней пуле, является нарушением условий соглашения об использовании. https://cloud.google.com/terms/?csw=1: «Ограничения. Клиент не будет ... создавать несколько приложений, учетных записей или проектов, чтобы имитировать или действовать как одно приложение, учетная запись или проект (соответственно) или иным образом получить доступ к Услугам таким образом, чтобы избежать взимания сборов ». –

+0

Отмечено. Я полностью вынул последние пули. Спасибо, что указали термины. – hyip

Смежные вопросы