我有一個扭曲的應用程序不斷因爲內存問題而死亡。該程序規模不斷擴大,在被OS關閉之前消耗了系統的所有內存。重新啓動並重復。扭曲的過程是巨大的
這是一個虛擬服務器上,所以我增加了一倍的內存,這個問題解決了 - 守護穩定在1.25GB的內存
有誰我如何能最好的資料這個告訴你有什麼建議/所有的記憶都被吸進去了?
如果應用程序的信息有幫助,我使用twisted reactor和internet.timer.TimerService來輪詢數據庫以通過三個「服務」更新項目。要處理的項目被推送到twisted.internet.defer.DeferredList中,並且它們的處理髮生在deferToThread塊中。在延遲的過程中,有一些阻塞操作(獲取網頁等)和大量的HTML解析(美麗的湯和其他庫)。我建議reactor.threadpool大小爲10,每個'服務'都會使用具有10個令牌的SemaphoreService進行線程化。我真的希望這個守護進程的內存最大可達400MB,而不是3倍。
哦,這是偉大的洞察力!謝謝!我一定會嘗試這種方法! –
扭曲的問題在你的下面,有內存泄漏發現的objgraph推薦。這實際上可以非常好地與我之前提到的ssh方法結合使用。有 - 你有它運行時調用瑞士刀交互式內存探索:) – jbreicis