@rPman

Проблемы с лимитами GAE, почему завышенны Datastore Read Operations?

Серьезно не работал с google app engine, но понадобился хостинг максимально надежного облачного хранилища для очень простого приложения. Тем более по расчетам я должен был вполне вписываться в бесплатные лимиты (не будет никаких проблем оплатить пару баксов в месяц, больше там не получится).



Проект примитивный:

Два объекта Datastore (один корневой с 2 полями и постоянно пополняющийся список объектов с 4 полями), одна периодически запускаемая задача, в ней открывается транзакция читается корневой объект и создается один списочный элемент (данные собираются путем одного запроса к сервису fetchurl).



Так вот в течении трех часов у меня кончаются лимиты Datastore Read Operations — 100%, при этом Datastore Write Operations — 5%

appstore dashboard:

XLTr9.png

установил штатный гугловский appstats:

BCQMQ.png



Не могу понять, откуда такое повышенное количество чтений, мало того, даже статистика appstat не показывает 50т запросов Next (я использую java.jdo, никаких перечислений, никакой работы с курсорами… единственное место где могло бы считаться чтение списока связанных объектов — при добавлении, в конструкторе списочного элемента стоит строка root.addItem(this) (а в корневом объекте Root это тупо метод this.items.add(item);



И тем более непонятно!!! Даже если считать, что на один запуск задачи приходится 19 чтений и 2 записи (кстати тоже непонятно, я заполняю четыре поля плюс ключевое) то за 3 часа (задача выполняется с частотой одна в 70 секунд) должно было быть утилизировано 154 запроса * 19 чтений = 2926! Откуда 50 тысяч запросов/



Какими еще средствами можно проконтролировать биллинг google. Ведь при таких расхождениях на порядок можно попасть на хорошую копеечку.



upd. Проблема с биллингом у google для datastore типа high replication, это явно не мой косяк, потому как сотня запросов на чтение для базы с двумя!!! записями это перебор, у меня даже в коде нет такого количества вызовов. Пересоздал и перезалил приложение в режиме Master/Slave (кстати теперь он помечен как Deprecated! хитрюги), теперь appstats показывает вразумительную информацию, по 1 или 2 запроса на вызов задачи, т.е. что и должно было бы быть, так же статистика в админке GAE показывает похожие цифры (завтра оценю нагрузку точнее)
  • Вопрос задан
  • 2886 просмотров
Пригласить эксперта
Ответы на вопрос 4
theli
@theli
Если код не представляет собой страшную коммерческую тайну то по нему было бы проще сказать.
Ответ написан
xSkyFoXx
@xSkyFoXx
Вполне возможно, что у Вас отображатся Low-Level Operations, а у Вас в коде происходит High-Level Operation. Т.о. получается много по квотам.
Ответ написан
ArthurG
@ArthurG
Если я правильно понял, что вы сделали. Это элементарно, если вы пихаете список в один объект, то чтобы добавить в него что-то, Вам его сначала нужно его прочитать весь. Отсюда и столько чтений.
Ответ написан
@TipTop
AppStats показывает 1933 RPC's на 11 запросов к /tasks/test. Получается 178 чтений БД за выполнение задачи. 50к запросов в таком режиме хватает на 4 часа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы