Pull to refresh

Comments 6

App Engine теперь и время работы инстансов по-другому считает. Из всего времени жизни инстанса учитывается только время обработки запросов (с 15-минутным интервалом). Подогрев приложения по крону может стать сильно невыгодным.

Графики из тестового приложения:
По потреблению памяти видно, что инстанс жил почти 5 часов, в то время, как учтенное «платное» время составило 15 минут.

как теперь подогревать приложения?
Я тоже отключил cron job который подогревал мое приложение, т.к. несколько экземпларов приложения работали сутками и съедали порядка 48 часов.

Можете дать более детальное пояснение к графикам — почему экземпляр приложения (instance) проработал 5 часов, а в GAE учелся всего 1 час?
Исследуя новые тарифные планы обратил внимание, что в моих приложениях за рамки бесплатных квот выходит два параметра — количестко экземпляров приложения и Datastore Reads. При этом мое приложение посещается не более 50 раз в день, и при этом плата за параматр Datastore Reads берется в размере 7 центов (~ $2/мес).

Суть приложения в том, что оно берет товары и выводит их пользователю. Даже на самом простом хостинге такое приложение написанное на Django + MySQL выдерживало бы большие нагрузки в рамках выделенных квот. И стоило бы это дешевле.

Поделитесь своим опытом, как уменьшить количество чтений из хранилища данных. Какие использовать методики? Что влияет на количество чтений? Как его уменьшить?
Самое очевидное — кэшировать данные в memcache. Перед запросом в хранилище проверять, если ли кэш и если нет, добавлять при извлечении из хранилища.
Да, это вариант. Но с мемкешем в ГАЕ тоже есть проблемы. Когда мы оптимизировали taxivs.com мы начали кешировать порции обработанных результатов в мемкеш. И все было отлично на локальном и тестовом сервере с маленькой нагрузкой.

Когда мы выкатили на продакшн это изменение, обратили внимание что один инстанс пишет данные в мемкеш, а другие инстансы не видят данные в мемкеше в течение какого-то времени. При попытке записать данные из других инстансов, само собой разумеется, вываливалось предупреждение мол такая ячейка в мемкеше уже занята. Но мы то уже сформировали данные для записи в мемкеш, дернули базу, нагрузили сервер. Получилась очень неприятна ситцация. Насколько я знаю, эта ситуация до сих пор актуальна.

Что мне отвелили в google group? Сказали что да, есть такое. Сказали что можно самому работать через низкоуровневое API с мемкешем. И все.

Да, кстати у меня есть несколько тикетов (баг репортов) которые я отписал в App Engine issue tracker. У некоторых репортов даже есть прикрепленный diff который нужно взять и применить в проекте. Некоторые баг репорты висят уже полтора года, они помеченные как подтвержденные. Но действий со стороны команды App Engine нет, к сожалению. Меня даже посещают сомнени, а действительно ли App Engine является Open Source проектом, или это просто лейба для красоты, мол мы такие хорошие. Выводы делайте сами.
Sign up to leave a comment.

Articles