2016-03-23 3 views
0

У меня возникла проблема с огромной утечкой памяти на сервере, обслуживающей приложение Django (1.8) с Apache или Ngnix (проблема возникает и на обоих).Сильная утечка памяти с Django

Когда я перехожу на определенные страницы (скажем, по конкретному запросу ниже), оперативная память сервера доходит до 16 Г за несколько секунд (только с одним запросом) и сервер замораживается.

def records(request): 
    """Return list 14 last records page. """ 
    values = [] 
    time = timezone.now() - timedelta(days=14) 
    record =Records.objetcs.filter(time__gte=time) 
    return render(request, 
        'record_app/records_newests.html', 
        { 
         'active_nav_tab': ["active", "", "", ""] 
         ' record': record, 
        }) 

Когда я мерзавец извлечет старую версию назад, когда не было такой проблемы нет, проблема сохраняется и у меня такая же проблема.

Я сделал чек памяти с Gumpy для неисправного запроса вот результат:

>>> hp.heap() 
Partition of a set of 7042 objects. Total size = 8588675016 bytes. 
Index Count %  Size % Cumulative % Kind (class/dict of class) 
    0 1107 16 8587374512 100 8587374512 100 unicode 
    1 1014 14 258256 0 8587632768 100 django.utils.safestring.SafeText 
    2  45 1 150840 0 8587783608 100 dict of 0x390f0c0 
    3 281 4 78680 0 8587862288 100 dict of django.db.models.base.ModelState 
    4 326 5 75824 0 8587938112 100 list 
    5  47 1 49256 0 8587987368 100 dict of 0x38caad0 
    6  47 1 49256 0 8588036624 100 dict of 0x39ae590 
    7  46 1 48208 0 8588084832 100 dict of 0x3858ab0 
    8  46 1 48208 0 8588133040 100 dict of 0x38b8450 
    9  46 1 48208 0 8588181248 100 dict of 0x3973fe0 
<164 more rows. Type e.g. '_.more' to view.> 
+0

Здесь нет никакой информации, чтобы мы могли продолжить, что-то, что вы добавили к этим «определенным» страницам, требует большой памяти – Sayse

+0

Вам необходимо перезагрузить сервер после возврата к предыдущей версии кода , – Alasdair

+0

Итак, когда проблема сложная, вы просто положили ее на удержание? Независимо от того, что я наложу на эти «определенные» страницы, нет, так как я git проверил на предыдущую фиксацию. И я уверен, что эта старая фиксация не была проблемой, потому что этот сервер используется многими людьми каждый день. –

ответ

0

После дня поисков я нашел свой ответ.

При исследовании я проверил статистические данные о своей БД и увидел, что таблица была 800Mo большой, но имела только 900 строк. Эта таблица содержит текстовое поле без макс. Как-то одно текстовое поле получило огромное количество вставленных данных, и эта линия замедляла все на всех страницах с использованием этой модели.

Смежные вопросы