2015-10-07 72 views
2

我的金字塔應用程序有一個長時間運行的任務(~30分鐘)。當調試工具欄打開時,內存使用率(RSS)開始超過30GB,導致OOM殺手會殺死整個Python進程。金字塔debugtoolbar導致內存「泄漏」

當我關閉調試工具欄時,RSS在任務運行期間一直保持在500MB以下,並且在使用內存時完全沒有問題。

我可以關閉debugtoolbar進行開發模式,但是我想讓它明顯的原因。運行任務前

  1. 反過來調試工具欄關閉,它的完成

  2. 告訴調試工具欄「忘記」跟蹤後:

    我正在尋找這個問題的可能解決方案,如對象每隔一段時間(運行任務期間)

  3. 任何其他開關,標誌,調試工具欄,將減少其內存使用。

解決方案?

+0

您的故事的開始 - 「我的金字塔應用程序有一個長期運行的任務(~30分鐘)」 - 聽起來非常錯誤......我看到我們甚至在一年前討論過這一點,我建議使用芹菜; )http://stackoverflow.com/questions/26195632/long-running-tasks-in-pyramid-web-app – Sergey

+0

@Sergey:它似乎(錯誤)一見鍾情,但它不是真的 - 對於絕大多數任務我運行芹菜只是一個矯枉過正的問題。我過去使用過芹菜,這是一個很好的解決方案,但是我的大部分任務都需要幾秒到十幾秒的時間,而且我不必再設置另一臺服務器來運行。我已經使用APScheduler來運行在「帶內」附近(在另一個線程中,雖然它支持在單獨的進程中運行),並且對它非常滿意。附:與debugtoolbar我有一個memleak在一切。不只是這個比較大的任務。 – LetMeSOThat4U

+0

我猜測這是因爲它記錄了內存中的所有數據庫調用。 –

回答

3

pyramid_debugtoolbar作爲一個補間來實現,它可以捕獲應用程序的大量狀態。所有狀態都存儲在進程內存中,以便在訪問debugtoolbar時可以訪問該信息。

debugtoolbar.exclude_prefixes 

這是記錄在這裏:http://docs.pylonsproject.org/projects/pyramid-debugtoolbar/en/latest/#settings

調試工具欄將不會顯示

但是,您可以使用.ini設置轉pyramid_debugtoolbar關閉應用程序中的某些路徑如果PATH_INFO變量以此設置中列出的任何前綴開頭,則不會記錄任何數據。

如有必要,您可以提供路徑列表。