Я попытался запустить django-CMS (+ filer + easy_thumbnails) с удаленной базой данных mysql на GoogleAppengine с облачным хранилищем. После исправления проблем производительности, связанных с файловой системой, и fork-fixing модуля django-google-cloud-storage (http://github.com/locandy/django-google-cloud-storage), производительность по-прежнему не увенчалась успехом (4 с за предыдущий кеш запросов). Большинство настроек настраиваются по умолчанию из учебника.Производительность django-CMS с удаленной mysql DB
Сроки предназначены для запросов на получение общей страницы (без кеша, без входа в систему, исключая время запуска экземпляра). Самый быстрый - это пустая страница (без изображений, без текста) с 1,7 секунды и 40 базовых RPC. Самая медленная полная страница со многими изображениями и некоторым текстом за 4 секунды и 100 rdbms.Exec звонков. Я использовал модуль профилирования python appengine.
В среднем это будет 45 мс на запрос.
Есть ли какая-либо конфигурация, которую мы пропустили?
Удалось ли кому-нибудь добиться развертывания CMS в облаке с удаленной БД, который можно использовать?
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.core.context_processors.i18n',
'django.core.context_processors.request',
'django.core.context_processors.media',
'django.core.context_processors.static',
'cms.context_processors.media',
'sekizai.context_processors.sekizai',
)
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.doc.XViewMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
)
DATABASES = {
'default': {
'ENGINE': 'google.appengine.ext.django.backends.rdbms',
Профилирование:
(1) 2014-01-15 12:15:03.358 "GET .../benefits/" 200 real=4636ms api=0ms overhead=9ms (89 RPCs, cost=0, billed_ops=[])
(2) 2014-01-15 12:14:56.862 "GET .../preise/" 200 real=5200ms api=0ms overhead=9ms (94 RPCs, cost=0, billed_ops=[])
(3) 2014-01-15 12:14:47.673 "GET .../einstieg/" 200 real=4684ms api=0ms overhead=8ms (87 RPCs, cost=0, billed_ops=[])
(4) 2014-01-15 12:14:01.054 "GET .../moeglichkeiten/" 200 real=5341ms api=0ms overhead=10ms (98 RPCs, cost=0, billed_ops=[])
(5) 2014-01-15 12:13:31.516 "GET .../werkzeuge/" 200 real=5176ms api=0ms overhead=9ms (96 RPCs, cost=0, billed_ops=[])
(6) 2014-01-15 12:13:00.507 "GET .../einstieg/" 200 real=5460ms api=0ms overhead=9ms (94 RPCs, cost=0, billed_ops=[])
(7) 2014-01-15 12:12:59.891 "GET .../" 302 real=369ms api=0ms overhead=0ms (7 RPCs, cost=0, billed_ops=[])
Вы можете уточнить, какие именно запросы принимают 4с? – jterrace
Общие запросы рендеринга страницы (без кеша). Самый быстрый - это пустая страница (без изображений, без текста) с 1,7 секунды и 40 базовых RPC. Самая медленная полная страница со многими изображениями и текстом через 4 секунды. – cat
Но это * ваша * латентность. Вам нужно будет копаться и посмотреть, что делают эти 96 RPC - вы должны взглянуть на трассировку appstats – jterrace