好的人裏面如何找到和修復memleaks,的Apache + PHP + WIN2K3
我們有阿帕奇2.2.11運行Windows Server 2003(小型企業版)中,對mod_php的5.2.9-2和每個請求都會有4到8MB左右的內存,然後是大約2到6MB的空閒空間。基本上,Apache發佈的數量總是明顯少於它在請求期間分配的數量(幾兆字節),並且幾小時後,httpd.exe進程最終消耗了所有可用的RAM並且服務器掛起。
這種行爲不發生在我們使用相同的代碼庫的Windows XP開發框和下面的CONFIGS可言:
- XP /阿帕奇2.2.11/PHP5.2.9-2/MySQL 5.1中。 34
- XP/2.0.x版本的Apache(各種)/PHP5.2.7/MySQL 5.0.67
簡單的PHP腳本不會出現泄漏例如:
- 基本PHP回聲功能
- 創建和引用類
- 輸出緩衝
- PDO與不持久連接
當運行我們的全部應用程序,然而,事情開始泄漏。我們能想到的唯一的事情就是使用對象,會話細節,全局變量 - 但是我怎樣才能知道泄漏是什麼?那是什麼造成的?在不破壞太多的唯一的機器,我們可以重複這個問題?
嗯。我們從不做任何明確的未設置()或使用__destroy。我們的腳本本身在執行結束之前調用memory_get_usage()之後使用大約8MB。我們假設Apache將能夠從該特定請求中恢復內存。我假設現在不太安全呢? – spronkey 2009-06-11 22:12:53