0

私のdjangoプロジェクトはapache2サーバーを使用してホストされており、最近大量のメモリを消費しており、異常なのか、プロジェクトで何かが体系的に正しく行われていないのかわかりません。

レコードの場合、デバッグはFalseに設定され、メモリリークは監視されて存在せず、djangoクエリセットデータベースはクリアされ、すべての静的参照は別の静的アプリケーションでホストされます。

具体的なメモリ消費量は次のとおりです。

2120 /home/path/apache2/bin/httpd.worker -f /home/path/apache2/conf/httpd.conf
46408 /home/path/apache2/bin/httpd.worker -f /home/path/apache2/conf/httpd.conf
47124  /home/path/apache2/bin/httpd.worker -f /home/path/apache2/conf/httpd.conf
4800 /home/path/apache2/bin/httpd.worker -f /home/path/apache2/conf/httpd.conf

誤解と質問:

実際にメモリとRAMのコストがかかるのは何ですか?クエリセット呼び出し?ビューを定義しますか?すべての?これは本当に初歩的な質問ですが、サーバーとWebアプリケーションがどのように相互作用するかについては抽象的な理解しかありません。

産業プロジェクトの場合、次のとおりです。

Model.objects.all()

本当に本当に悪いですか?または、すべてを可能な限りフィルタリングする必要がありますか?

46408と47124のRSSは、djangoプロジェクトにとって圧倒的に大きいと見なされますか?または、RAM使用量をさらに最適化することについても心配する必要はありませんか?

私のプロジェクトのすべてのビューは、少なくとも3つのSomeModel.objects.all()呼び出しで応答されています。これはパフォーマンスに深刻な悪影響を及ぼしますか、それとも問題ではありませんか?

ありがとう

4

1 に答える 1

1

Model.objects.all()すべての結果がすべての項目を評価するわけではありません。DjangoのQuerySetは遅延評価されます。あなたがlen(Model.objects.all())今それを評価するような愚かなことをしていないのなら、あなたはおそらくそれらの評価で終わらないでしょう。少なくとも常にではありません。たとえば、すべてのページネーターがクエリセットなどを制限します。

私が経験したDjangoで最もRAMを消費するものの1つは、管理者に数十万の可能な関連オブジェクトで構成される選択ボックスを表示するときでした...(それraw_id_fieldsが利用可能な理由です)。

于 2012-10-06T08:42:00.033 に答える