2016-03-23 8 views
0

Ich stehe vor einem Problem von großen Speicherverlust auf einem Server, eine Django (1.8) -App mit Apache oder Ngnix (das Problem passiert bei beiden).Schweres Speicherleck mit Django

Wenn ich auf bestimmte Seiten gehe (sagen wir auf die spezifische Anfrage unten) der RAM des Servers geht bis zu 16 G in wenigen Sekunden (mit nur einer Anfrage) und der Server einfrieren.

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, 
        }) 

Wenn ich git Kasse ältere Version zurück, wenn es kein solches Problem ist, das Problem überlebt, und ich habe das gleiche Problem.

Ich habe eine Speicherprüfung mit Gumpy für die fehlerhafte Anfrage hier ist das Ergebnis:

>>> 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

Es gibt hier keine Informationen für uns, etwas, das Sie zu diesen "bestimmten" Seiten hinzugefügt haben, erfordert viel Speicher – Sayse

+0

Sie müssen den Server nach dem Zurücksetzen auf die vorherige Version des Codes neu starten . – Alasdair

+0

Also, wenn ein Problem kompliziert ist, legen Sie es einfach fest? Was auch immer ich auf diese "bestimmten" Seiten schreibe, ist weg, seit ich es zu einem früheren Commit ausgecheckt habe. Und ich bin mir sicher, dass dieses ältere Commit nicht das Problem hatte, da dieser Server täglich von vielen Personen genutzt wird. –

Antwort

0

Nach einem Tag der Suche ich meine Antwort gefunden.

Während der Untersuchung überprüfte ich Statistiken auf meiner DB und sah, dass einige Tabelle 800Mo groß war, aber nur 900 Reihen hatte. Diese Tabelle enthält ein Textfeld ohne max len. Irgendwie hat ein Textfeld eine große Menge an Daten eingefügt und diese Zeile verlangsamte alles auf allen Seiten, die dieses Modell benutzen.