簡體   English   中英

在mod_python中殺死單個Apache進程

[英]Killing individual Apache processes in mod_python

我們在使用大量內存的單個apache進程中遇到了問題,具體取決於請求,而從未將其釋放回主系統。 由於這些請求隨時可能發生,因此隨着時間的流逝,Web服務器將被推入交換區域,從而使其甚至無法響應SSH。 更糟糕的是,請求完成后,Python無法將內存釋放回野,這導致大量500mb-1gb的Apache進程閑散。

我們每秒推送很少的請求,但是每個請求都有很大的潛力。

我想做的是,如果它的駐留內存超過某個閾值,則有一種方法可以在單個apache進程子進程完成服務請求后將其殺死。 我已經嘗試了幾種在mod_python中實際執行此操作的方法,但是似乎任何形式的系統退出都會導致對客戶端的響應未完成。

除了使所有進程(我們確實希望避免)順暢無阻之外,是否還有任何辦法告訴Apache在完成服務請求后隨意終止該進程? 歡迎所有想法。

作為附加的警告,由於系統的遺留特性,我們無法升級到Python的更高版本,因此我們無法利用2.5的改進的內存性能。 同樣,我們仍停留在當前的操作系統上。

版本:系統:Red Hat Enterprise 4

阿帕奇:2.0.55

的Python:2.3.5

我要說的是,即使有可能,這也是一個巨大的破解(並且不穩定)-在這種情況下,您應該設置一個Apache外部的進程,該進程將監督正在運行的進程並在超出內存范圍時終止單個Apache / time預定義的限制。

這樣的腳本可以通過每隔幾秒鍾執行一次檢查的mainloop來保持連續運行,甚至可以放在crontab中以使其每分鍾運行一次。

我認為沒有理由從服務流程本身內部嘗試這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM