我正在運行的壓力測試與我的Apache 2.2在Windows Server 2008 R2上同時運行64位的許多連接。 〜500後( -/+ 10)的連接由我得到這個錯誤在error.log中阿帕奇:無法初始化zend_mm存儲[win32]
無法初始化zend_mm存儲[的Win32]
我試圖增加php.init
的memory_limit
但沒有沒有幫助。爲什麼在增加memory_limit之後,它仍然會在相同數量的連接上失敗?
我正在運行的壓力測試與我的Apache 2.2在Windows Server 2008 R2上同時運行64位的許多連接。 〜500後( -/+ 10)的連接由我得到這個錯誤在error.log中阿帕奇:無法初始化zend_mm存儲[win32]
無法初始化zend_mm存儲[的Win32]
我試圖增加php.init
的memory_limit
但沒有沒有幫助。爲什麼在增加memory_limit之後,它仍然會在相同數量的連接上失敗?
此錯誤表示您已耗盡內存池。壓力測試可以做到這一點。即使你提高了PHP的限制,你的內存也只能分配到你的服務器上。你說你的服務器是32位的,這意味着你最多有4GB的RAM加上你的交換文件。 500個連接可能很容易淹沒一臺小型服務器。
所以最後發現,如果是的ThreadsPerChild
在httpd-mpm.conf
這是數量:
<IfModule mpm_winnt_module>
ThreadsPerChild 1500
MaxRequestsPerChild 0
</IfModule>
我已經把它改爲:
<IfModule mpm_winnt_module>
ThreadsPerChild 64
MaxRequestsPerChild 0
</IfModule>
而且這是工作的罰款。
對不起假信息(編輯問題),服務器是64位Windows 2008 R2與4 GB的RAM。但是你的陳述仍然是事實。但是,每個連接分配多少內存?它可以在PHP中配置嗎? – Griffin
每個PHP線程都有它自己的內存池(當PHP超出該限制時,你會得到一個非常不同的錯誤),然後Apache也獲得一些內存。但是你正在打硬盤,而不是軟帽。即使你調整了一些,我也不確定你可以在500個併發連接的資源中創建一個服務器。考慮一個具有更多處理器/內存的虛擬機 – Machavity
也要考慮到,即使你確實讓它與一個RAM池中的小塊一起生活,它也會像瘋狂地分頁到磁盤以跟上。 – Machavity