我在Apache上有許多睡眠腳本的問題。當我啓動apache,並清除緩存內存到13GB免費,然後空閒內存仍然下降到ap。 100MB免費。許多PHP進程要睡覺並保持緩存內存。一個腳本有19 MB。Apache內存問題
有時睡眠腳本甚至從內存中保留700MB。是一些設置,當腳本結束時如何告訴Apache,然後處理結束?
我在Apache上有許多睡眠腳本的問題。當我啓動apache,並清除緩存內存到13GB免費,然後空閒內存仍然下降到ap。 100MB免費。許多PHP進程要睡覺並保持緩存內存。一個腳本有19 MB。Apache內存問題
有時睡眠腳本甚至從內存中保留700MB。是一些設置,當腳本結束時如何告訴Apache,然後處理結束?
沒有你的問題不是「與阿帕奇多睡腳本」,是你使用睡在Apache的腳本。睡覺對於大多數Web服務器來說都是一種詛咒,這些服務器都是爲了一個目的而設計的:接收和響應基於無狀態HTTP(S)的Web請求。
睡覺,本身,不是絕對邪惡的,但如果總的延遲超過幾秒鐘,然後你正在做的事情非常錯了,你需要探索其他方法。
例如,phpBB通過使用排隊請求表和常用檢查函數來實現僞cron類型的函數,其中web請求調度未來的工作活動(例如每小時對應用程序相關的表維護)。如果計劃的任務到期,則使用一個像素的圖像請求來生成異步回調來執行該活動。 (通過這樣做的圖像負荷此請求來自那個順便觸發它的URI解耦。
另一種方法是使用獨立的守護程序或計劃作業的變體來服務該排隊的請求表。
另一種方法是簡單地執行一個子進程,然後叉daemonise本身和Apache的工作進程分離。
而另一種方法......
在Apache中運行的PHP的資源和時間限制由php.ini控制
這兩個設置是自我解釋。
max_execution_time = 30
memory_limit = 128M
所以我不認爲腳本會永久睡眠並耗盡你的記憶。
請先檢查這些設置。
我將memory_limit設置爲2048,因爲許多腳本正在進行硬操作並且max_execution_time爲1000000,因爲很多腳本運行了很長時間,有些是永久的。 – user1173536 2012-03-13 08:04:59
然後由Apache運行的PHP不適合你的需要。你應該考慮其他方法。 – Magic 2012-03-13 08:12:08
可用內存(所報告的'free')未使用,失去的記憶。內核使用RAM進行文件系統緩存...... – 2012-03-13 07:03:18
問題是,睡眠過程ssis仍在增長,ap。 1/60s,當可用內存降至100 MB時,即使真的不使用內存很多,系統也會從磁盤進行交換。 – user1173536 2012-03-13 07:12:46
php不適合長期居住的應用程序,但它是可能的。所以這是一些漏記php代碼的問題。但是,當腳本結束時,Apache/php應該釋放所有使用過的內存。 – kirilloid 2012-03-13 07:32:51