0

guppy をインストールし、django アプリのプロファイルを作成するために、このチュートリアルに従いました。私の django アプリにはメモリ リークはありませんが、何らかの奇妙な理由で、Apache/mod_wsgi 環境で多くのメモリを必要とします。この問題の原因である可能性があるインポートの 1 つと言われました。

guppy を使用してどのインポートがより多くのメモリを消費するかを確認するにはどうすればよいですか? guppy の出力は、私のレベルではあまり有益ではありません。ここにあります:

*** Connection 1 opened ***
<Monitor> lc
CID PID  ARGV
  1 2056 ['manage.py', 'runserver']
<Monitor> sc 1
Remote connection 1. To return to Monitor, type <Ctrl-C> or .<RETURN>
<Annex> int
Remote interactive console. To return to Annex, type '-'.
>>> hp.heap()
GC hook object was referred to from somebody!
Partition of a set of 128202 objects. Total size = 11015508 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0  55746  43  4117640  37   4117640  37 str
     1  29278  23  1272920  12   5390560  49 tuple
     2   2457   2   777324   7   6167884  56 dict (no owner)
     3    495   0   583860   5   6751744  61 dict of module
     4   8361   7   501660   5   7253404  66 function
     5   7202   6   489736   4   7743140  70 types.CodeType
     6   1026   1   461748   4   8204888  74 type
     7   1022   1   402472   4   8607360  78 dict of type
     8    179   0   250852   2   8858212  80 dict of django.db.models.fields.CharField
     9   2599   2   156124   1   9014336  82 list
<486 more rows. Type e.g. '_.more' to view.>
4

1 に答える 1

1

ふぅ。Python Web アプリケーションが uWSGI や gunicorn などの別の WSGI サーバーよりも Apache/mod_wsgi でより多くのメモリを消費する特定の理由はありません。同等の構成での Web アプリケーションのプロセスごとのメモリ要件は、アプリケーションの実行に違いがないため、ほぼ同じである必要があります。違いを生む唯一のことは、サーバー構成がマルチスレッドであり、シングルスレッド構成と比較しているかどうかです。

また、見ているメモリの量にも注意してください。仮想メモリ サイズではなく、RSS を使用します。見る:

http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Memory_Constrained_VPS_Systems

于 2012-05-14T00:03:05.697 に答える