Является ли пропускная способность процессора в Google App Engine слишком дорогой или это мой код?

Я хотел проверить производительность чтения GAE. Около 10 000 объектов извлекаются из хранилища данных. Эти объекты содержат имя 3 свойств (около 16 символов), описание (около 130 символов) и отметку времени. Ничего необычно большого.

Вот что я вижу:

В среднем для чтения 10 тысяч объектов требуется около 11 секунд. Не уверен, считается ли это быстрым, медленным или разумным, но, тем не менее, это не слишком увлекательно.

Более интересная находка - это измерение процессора. Выполнение этой операции чтения 100 раз потребляет около 3,0 часов ЦП. Стоимость составляет $ 0,30.

Учитывая, что здесь нет алгоритма, интенсивно использующего ЦП, не делает ли это слишком дорого использование полосы пропускания ЦП GAE? (конечно, он поставляется с системными администраторами 24/7 в виде скриптов Python и т.д., но все же ...)

Или это что-то в моем коде Java:

http://github.com/ akirekadu / GAE-Evaluation / blob / master / show.jsp

9
задан akirekadu 27 August 2010 в 04:31
поделиться

1 ответ

Это не ваш код, я верю вашему результату. В наших собственных экспериментах мы обнаружили, что извлечение и (особенно) хранение являются очень затратными операциями с точки зрения квоты процессора.

Мы отметили, что:

  • Индексы стоят дорого. Если вы больше пишете, чем читаете, будьте скупы на индексы. Убедитесь, что вы знаете об атрибуте indexed=False в свойствах модели, и внимательно следите за тем, что автоматически генерируется в index.yaml.

  • Если вы больше читаете, чем пишете, может иметь смысл использовать множество мультииндексов. Используйте memcache везде, где это возможно. Используйте группы сущностей, если они имеют смысл.

  • API ядра приложения предоставляет инструменты, повышающие эффективность. Они имеют большое значение. Если вы пишете 100 строк, использование одного массового вызова put() вместо 100 отдельных вызовов put() значительно снизит нагрузку на ЦП.

Если ваше приложение будет часто выполнять большие операции чтения, как вы описали, вы можете выбрать другое решение (например, VPS, такое как Slicehost или Linode) или другую модель данных. Каждое приложение будет иметь разные потребности, диск WRT, процессор, память и т. д., поэтому я оставлю предварительные расчеты в качестве упражнения для читателя.

ХТХ!

5
ответ дан 3 November 2019 в 07:11
поделиться
Другие вопросы по тегам:

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