Оптимизация Appengine - PullRequest
       2

Оптимизация Appengine

0 голосов
/ 18 мая 2011

Как я могу заставить запросы моего приложения Google AppEngine работать лучше и быстрее (т. Е. Меньше времени загрузки и меньше использования ЦП)? Я конкретно имею в виду улучшения для серверной части приложения, а не для клиентской части.

Ответы [ 5 ]

3 голосов
/ 18 мая 2011

Используйте appengine Appstats, чтобы увидеть, где на самом деле ваше приложение использует больше ресурсов процессора. Попробуйте выяснить причину этого и найдите альтернативное решение.В Python вы можете сделать много оптимизации.M

  1. Используйте memcache api, который позволяет легко и быстро получать данные.Избегайте ненужных fetch () и get ().

  2. Избегайте использования большого количества RPC при использовании свойства db.reference (). Блог Ника об этом объясняет это.

  3. Моделирование в appengine очень важно для производительности.Убедитесь, что у вас есть подходящая модель, разработанная для вашего приложения.

  4. Старайтесь не делать выборки, пока они вам действительно не нужны.

1 голос
/ 18 мая 2011

Я использую memcache , что значительно повысило производительность моего приложения.Я надеюсь, что это также может быть полезным для вас.При использовании memcache в сочетании с настройкой заголовка HTTP-заголовка HTTP-управления я получил значительные улучшения во времени ответа.

1 голос
/ 18 мая 2011

Это не совсем оптимизация, но выбор фреймворка здесь действительно важен.Большинство устаревших фреймворков на Java и Python (Django, ..) не предназначены для быстрого запуска, потому что это просто не важно для традиционного хостинга.Подумайте об использовании конкретной платформы App Engine, такой как Tipfy, Kai, Webapp, ... (Python) или slim3, ... (Java).

В идеале вы должны организовать свои данные так, чтобы каждый пользовательский запрос требовал толькоодин вызов хранилища данных, предпочтительно db.get, потому что запросы значительно медленнее.Чтобы достичь этого, вам часто нужно денормализовать ваши данные и поддерживать синхронизацию разных копий с использованием групп сущностей и транзакций.

При выполнении более одного вызова urlfetch или API вы можете ускорить процесс,выполнение вызовов параллельно с использованием неблокирующего (асинхронного) синтаксиса.Кэширование всегда, когда это возможно, также очень важно.

Если вы еще этого не сделали, я рекомендую посмотреть выступления Google по IO (2010 и 2011), в частности Scaling App Engine приложений этого года , которыеочень хорошо описывает лучшие рекомендации на стороне сервера.

1 голос
/ 18 мая 2011

Я бы рекомендовал использовать Appstats , чтобы увидеть, где в вашем приложении есть узкие места.

0 голосов
/ 08 марта 2016

Один часто пропускаемый аспект заключается в том, что различные связанные с Appengine сервисы поддерживают асинхронную обработку, например Datastore:

https://cloud.google.com/appengine/docs/java/datastore/async

и URL Fetch:

https://cloud.google.com/appengine/docs/python/urlfetch/asynchronousrequests

Если у вас есть запросы, которые выполняют различные задачи, вы можете увидеть, можно ли их распараллелить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...