2

Python クライアント サーバー アプリケーションがあり、そのサーバーは約 4 日間実行されています...そのメモリ使用量 (/proc/PID/status -> VmSize で報告) が約 660Mb に達しました。メモリ リークの可能性があるため、objgraphを使用してメモリ使用量 (最初の 20 個のオブジェクト タイプ) を出力しました。

58524    tuple
33270    dict
15483    function
9976     list
5396     set
2644     weakref
2489     builtin_function_or_method
2482     instancemethod
1898     OrderedSet
1751     _BindParamClause
1680     _generated_label
1485     Comparator
1398     type
1315     InstrumentedAttribute
1267     CustomColumn
1165     cell
1146     ScalarAttributeImpl
1146     ColumnProperty
1146     ColumnLoader
1075     wrapper_descriptor

そこには特に「臭い」ものは何もありません。何か不足していますか? おそらくこれは、Pythonが未使用のメモリをすぐに OS に解放しないためでしょうか?
(これは CherryPy+SQLAlchemy アプリケーションです)

4

1 に答える 1

1

より意味のあるデータを取得するには、サーバーを数日間実行し続け、この概要を 1 日に 1 回プルします。重要なのは、ある日から次の日に蓄積されているオブジェクトの種類を確認することです。これらのオブジェクト タイプは、メモリ リークの可能性が最も高い候補です。見つけたものをお知らせください。

于 2011-05-12T03:22:36.423 に答える