2016-08-23 86 views
5

我試圖通過Uniform Server WAMP包(Apache版本2.4.20,PHP版本7.0.8)自己託管一些網頁,其中一個是簡單的Bootsrap投資組合另一個是使用WooCommerce和其他插件的基於WordPress的在線商店。WordPress Apache VirtualAlloc和VirtualFree失敗,PHP內存不足

有時我的WordPress基於網站停止工作,直到我重新啓動Apache服務。我覺得充滿了這些錯誤主要Apache日誌:

VirtualAlloc() failed: [0x00000008] Not enough storage is available to process this command. VirtualFree() failed: [0x000001e7] Attempt to access invalid address.

而且我店Apache的錯誤日誌充滿了這些:

[Tue Aug 23 14:49:59.357235 2016] [:error] [pid 11300:tid 1768] [client 88.119.96.56:52269] PHP Fatal error: Out of memory (allocated 2097152) (tried to allocate 4096 bytes) in D:\Software\UniServerZ\vhosts\***\wp-includes\pomo\mo.php on line 276, referer: http://***/wp-admin/edit.php?post_type=shop_order

線不同至268,270和276,並在mo.php他們期待像這樣:

$entry = new Translation_Entry(); // 268 
... 
$parts = explode(chr(4), $original); // 270 
... 
$parts = explode(chr(0), $original); // 276 

整個源代碼可以找到here

與此同時,我的投資組合頁面沒有問題。

我增加memory_limit的在php.ini中至2048MB,增加define('WP_MEMORY_LIMIT', '256M');define('WP_MAX_MEMORY_LIMIT', '512M');的wp-config.php文件,但一週仍至少兩次我的網站不能訪問和日誌充滿上述消息。

我的網站不會產生太多的流量,服務器有16GB的RAM和半空的512GB SSD,請幫我理解或找出是什麼原因造成的問題,因爲當前日誌對我來說很少。

更新1

我發現上面所有的VirtualAlloc一個有趣的線和VirtualFree失敗:

[Tue Aug 23 21:02:40.298272 2016] [:error] [pid 504:tid 1836] [client 191.96.249.54:36032] script 'D:/Software/UniServerZ/www/xmlrpc.php' not found or unable to stat

貌似我加入了這行黑客行爲,禁用xmlprc的受害者。 htaccess文件:

<Files "xmlrpc.php"> 
Order Allow,Deny 
Deny from all 
</Files> 

希望這有助於。

更新2 - 幾天後

看起來問題解決了,不時地我發現客戶端通過服務器配置錯誤否認,但網站不再失敗。

更新3 - 幾個星期後

的VirtualAlloc()和VirtualFree()失敗回來,沒有任何可疑的腳本請求,日誌只是充滿提到的失敗,我的店數有一堆提到了的內存錯誤。是否有可能如何使Apache錯誤更詳細/詳細,以找出哪些命令會觸發沒有足夠的存儲錯誤,或試圖訪問哪個無效地址?

更新4 - 幾個月後

經過正規的網站使用的一段時間,然後重新啓動Apache的不時錯誤就停了,我懷疑一些常用的插件已經更新,現在的內存沒有按沒有泄漏,一切正常,直到下一個錯誤...

+0

我有這個確切的問題。我能想到的唯一的事情就是Xamppp是32位的,所以無法爲生產站點尋址儘可能多的內存。 –

回答

3

不知道這可以幫助,因爲WordPress不使用PHP本地會話, ,但可以,一些插件正在使用。

我的情況: Windows操作系統,PHP 7.0.6 - 7.0.11
VirtuaAlloc由於php會話的使用而失敗。 http://php.net/manual/en/features.sessions.php 我已經刪除/替換所有php session_函數與我自己的。

howto reproduce: session_start(); 解析一些巨大的xml(150MB或更多)文件 在Apache服務器上同時運行多次相同的腳本。

相關問題