2015-10-03 7 views
3

Я пытаюсь сократить счет Google App Engine, установив параметры automatic_scaling. В среднем, мое приложение работает от 7 до 10 экземпляров, где 2 или 3 из них простаивают. Но иногда, как между 3 и 6 утра на прилагаемой карте, разница между активными и незанятыми экземплярами смехотворно велика. Кроме того, я хочу уменьшить количество активных экземпляров, увеличивающих время отклика для конечного пользователя (установка min_pending_latency и max_pending_latency). Но до сих пор ни одна из этих настроек не оказывает никакого эффекта.App engine automatic_scaling configuration

Это моя app.yaml конфигурация:

automatic_scaling: 
    min_pending_latency: 250ms 
    max_pending_latency: 750ms 
    max_idle_instances: 2 

Instances

ответ

6

Установка и min_pending_latencyиmax_pending_latency посылает смешанные сообщения в autoscaler.

В целом, вы можете настроить autoscaler к либо содержать ваши затраты (установить низкое значение для max_idle_instances и/или высокого для min_pending_latency), или улучшить свою масштабируемость - то есть, держать задержки низкий для всплесков трафика (задайте высокое значение для min_idle_instances и/или низкое для max_pending_latency).

Не Смешайте два вида ухищрений - такие «смешанные сообщения», по моему опыту, никогда не приводят к хорошим эффектам ни при каких издержках, ни при латентности во время всплеска.

И да, я я работать, чтобы иметь эту основную часть информации стала частью официальной документации Google Cloud Platform - он просто занимает больше времени, чем я надеялся, что, почему, тем временем, я вывешиваю этот ответ.

Более продвинутая альтернатива, если вы очень уверены в своих шаблонах трафика с течением времени, возможностях всплесков и т. Д., Заключается в переключении с автоматических масштабированных модулей на базовые или даже с ручной масштабированием, написав свой собственный код для запуска и завершения экземпляров через Modules API.

В любом случае, я должен признать, что это никогда не работало оптимально для меня, для модулей, предназначенных для обслуживания пользовательского трафика (в отличие от задач-очередей или основанных на базе cron «бэкэнда») - скачки и временные диаграммы пользователей никогда не были столь же предсказуемыми, как анализируя прошлые записи, мучительно предлагаемые. Итак, в конце концов, я всегда возвращался (для обслуживания пользовательского трафика) к хорошему старому автомасштабированию, возможно, со скромными настройками либо, чтобы сократить расходы, или, чтобы улучшить масштабируемость, как я рекомендую выше.

+0

Итак, как вы думаете, это хорошая конфигурация, которая может содержать затраты? 'automatic_scaling: min_pending_latency: 500 мс max_idle_instances: 2' –

+1

@ JavierMarín, да, я считаю, что это, скорее всего, сократить затраты по сравнению с по умолчанию' auto' масштабирования (в зависимости от формы и частоты ваших скачков напряжения в использовании). –