0
我有幾個HTTP請求會導致一些大量的內存使用(使用mod-wsgi運行Python Django應用程序)。 我的問題是這些過程似乎閒置一段時間。如果它們消耗太多內存,則會終止閒置的apache進程
有沒有辦法告訴apache殺死一個耗費X兆內存的空閒進程? 請求已成功處理。
我有幾個HTTP請求會導致一些大量的內存使用(使用mod-wsgi運行Python Django應用程序)。 我的問題是這些過程似乎閒置一段時間。如果它們消耗太多內存,則會終止閒置的apache進程
有沒有辦法告訴apache殺死一個耗費X兆內存的空閒進程? 請求已成功處理。
不,目前沒有。你可以做的是將具有較大瞬態內存使用情況的特定URL委託給一個單獨的mod_wsgi守護進程組,該進程組設置了非活動超時設置,以便如果對該URL的請求不頻繁,當進程不用於同時它會重新啓動進程並回收內存。如果沒有足夠長的非活動時間觸發非活動超時,則可以使用最大請求並根據請求數量每隔一段時間循環一次。
WSGIDaemonProcess main processes=3 threads=5
WSGIDaemonProcess memory-hungry-1 threads=5 inactivity-timeout=60
WSGIDaemonProcess memory-hungry-2 threads=5 maximum-requests=20
WSGIProcessGroup main
WSGIApplicationGroup %{GLOBAL}
</Location /memory/hungry/url-1>
WSGIProcessGroup memory-hungry-1
</Location>
</Location /memory/hungry/url-2>
WSGIProcessGroup memory-hungry-2
</Location>
換句話說,垂直分區您的WSGI應用程序以跨多個守護進程組運行。這樣您就可以按照與應用程序的特定部分相匹配的方式自定義進程/線程和其他守護進程的特定設置。