Почему Python Django 1.8.4 сильно нагружает CP?

Всем Доброго дня! или вечера! Я Django начал изучать не давно, и для меня было удивлением увидеть нагрузку на сервер, с таким небольшим посещением: 200-500 юзеров
30-80 CP! (Хостинг beget CPU`S: 56 * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz)
Без кэширования за одно посещение 0.3CP!

Настроил кэширование всего сайта,
во view настроил кэш к каждому представлению
в models обновляю кэш используя сигналы

Результат меня совсем не удовлетворил ~0.15CP за одно посещение, это тоже очень много если в сутки посещаемость от 200- 500 уникальных посетителей cpu = (250человек ) * (0.15 время затраченное одним проц) = 37! при допустимом в сутки 65. И это если настраивать кэш в ручную, если использовать cache-macine, django-redis со всеми плюшками, то увеличивается только скорость отдачи контента, при этом нагрузка остается той же что и что и без кэша

Нагрузка на базу почти отсутствует

Вот мои настройки и подключенные приложения:

INSTALLED_APPS = [
    'cmksite',
    'suit',
    'ckeditor',
    'filebrowser',
    'django.contrib.auth',
    'django.contrib.admin',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'debug_toolbar',
]

MIDDLEWARE_CLASSES = [
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',#debug
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
                os.path.join(BASE_DIR, 'templates'),
                os.path.join(BASE_DIR, 'cmksite/templates'),
                'Django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.core.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.core.context_processors.media',
            ],
        },
    },
]
CACHE_MIDDLEWARE_SECONDS = 86400
CACHES = {
    'default': {
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
    'LOCATION': os.path.join(BASE_DIR, 'mem_cache'),
     'MAX_ENTRIES': 5000,
    },
}
CACHE_MACHINE_USE_REDIS = True #http://niwinz.github.io/django-redis/latest/
REDIS_BACKEND = 'redis://localhost:6379'

Использую WSGI и Apace
На django у меня это первый проект, и если брать тот же WORDPRESS без кэширования за сутки при той же нагрузке максимум 3 CP.
Подскажите в чем проблема?
  • Вопрос задан
  • 1405 просмотров
Решения вопроса 1
@deliro
1) Ни разу не использовал FileBasedCache, но почти уверен, что его стоит выбросить. Кэш должен быть быстрым, а не чуть быстрее базы (к тому же, конкурировать с базой). Поставь memcached (или Redis)
2) Поставь nginx вместо апача
3) Ты статику раздаёшь апачем?
4)
Использую WSGI
это здорово, но очевидно. Что ты используешь в качестве веб-сервера? uWSGI или Gunicorn?

Мой блог висит на Raspberry Pi первой версии (а это 700 MHz и одно ядро) и выдерживает до 25 запросов в секунду. Я уж не говорю про DO (самый первый тариф за 5 баксов с одним ядром), где ab выдаёт ~140-170 запросов в секунду на более-менее статичных сайтах.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
DmitryVoronkov
@DmitryVoronkov
Python Developer
Сначала посмотри в логах, какие запросы у тебя к бд:
Оптимизируй запросы:
select_related
Ответ написан
Комментировать
un1t
@un1t
Какие-то странные рассужедния. Хотябы ab подергай, посмотри сколько RPS выдает, грузиться ли при этом проц. Потом разберись, что тормозит, база или шаблоны.
Ответ написан
Комментировать
скорее всего дело в uWSGI если вы о нем. Недавно был опыт, настройки его для пхп проекта. на ста потоках CPU1: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz (Cores 8)
Memory: 64157 MB + SSD

так вот на 100 потоках ab все ядра на 100%
при том что цмска кешировала все злостно. И загрузка именно по веб серверу.
php-fpm при схожей конфигурации что-то около 350 держал и проц не захлебывался.
И да статику раздавал nginx.
им писал на гитхаб, послали куда подальше ... Сказали нерепрезентативно.
Ответ написан
Ваш ответ на вопрос

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

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