2016-03-23 4 views
0

ApacheまたはNgnixでDjango(1.8)アプリケーションを提供しているサーバーで、メモリリークの問題が発生しています(この問題は両方で発生します)。Djangoによる重大なメモリリーク

私が特定のページに行くと(以下の特定の要求について言えば)、サーバーのRAMは数秒で最大16Gになり(1回の要求でのみ)、サーバーはフリーズします。私は古いバージョンにチェックアウトをgitのとき

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

問題が複雑になると、それを保留にするだけですか?私が前のコミットにチェックアウトして以来、私がそれらの「特定の」ページを置いたものは何もなくなっています。そして、私は、この古いコミットは、このサーバーが毎日多くの人によって使用されているため、問題ではなかったと確信しています。 –

答えて

0

調べているうちに私のDBの統計を調べて、テーブルが800Moだが900行しかないことがわかりました。このテーブルには、最大lenのないテキストフィールドが含まれています。どういうわけか、あるテキストフィールドには膨大な量のデータが挿入されていて、このラインはこのモデルを使用しているすべてのページですべてが遅くなっていました。

関連する問題