2012-04-08 3 views
2

В Java Google App Engine вы можете включить Параллельные Запросы/THREADSAFE режима: https://developers.google.com/appengine/docs/java/config/appconfig#Using_Concurrent_RequestsНасколько эффективнее Java Google App Engine в потоковом режиме?

Единственная причина, чтобы сделать это, что серверам Google нужны будут раскрутить меньше экземпляров вашего приложения, чтобы служить определенное количество запросов и поэтому потенциально сэкономит вам деньги. Конечно, это также означает, что вам придется писать потокобезопасный код.

Итак, интересный вопрос: сколько денег это экономит? Кто-нибудь пытался измерить его в соответствии с определенной базой конфигурации/функциональностью приложения/нагрузкой?

+0

Здравствуйте. Я опубликовал анализ threadsafe для GAE здесь devcon5.blogspot.com (хотя и для GAE/J), и был бы очень признателен за любые комментарии или дополнительные вопросы, которые я должен рассмотреть. Благодарю. –

ответ

2

Это действительно зависит от вашего кода:

  1. В режиме одного запроса, вы можете легко вычислить запросов в секунду: если запрос в среднем занимает 100мс до конца, то один экземпляр будет в состоянии выполнить 10 запросов в секунду.

  2. В режиме параллельного запроса это зависит от двух факторов:

    A. Тип экземпляра вы используете - AFAIK они все же вы просто получите различное количество ядер. Больше ядер означает более высокую производительность.

    B. Отношение кода, привязанного к процессору, по сравнению с кодом, привязанным к IO, который выполняет запрос. Если ваш код больше привязан к IO (= ожидание Datastore или другой внешней службы), тогда CPU сможет запускать больше его параллельно.

В моем приложении я вижу 15-20 RPS на 200мсе в запрос на базовом случае, так что я мог бы сказать, что фактор между единым запросом и многопользовательским режимом запроса составляет около 3-4.