2016-08-23 19 views
5

Próbuję hostować kilka stron internetowych samodzielnie przy użyciu pakietu WAMP Uniform Server (wersja Apache 2.4.20, wersja 7.0.8 PHP), jednym z nich jest prosty portfel Bootsrap a innym jest sklep internetowy oparty na WordPress przy użyciu WooCommerce i innych wtyczek.WordPress Apache VirtualAlloc i VirtualFree się nie powiodło, PHP z pamięci

Od czasu do czasu moja witryna oparta na WordPressie przestaje działać, dopóki nie zrestartuję usługi Apache. Uważam, główny dziennik Apache wypełnioną tych błędów:

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

i mój sklepy Apache dziennika błędów pełny z nich:

[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

linie różnią się do 268, 270 i 276, aw mo.php wyglądają tak:

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

Cały kod źródłowy można znaleźć here.

W międzyczasie moja strona portfolio działa bez problemów.

zwiększyłem memory_limit w php.ini do 2048MB, dodaje define('WP_MEMORY_LIMIT', '256M'); i define('WP_MAX_MEMORY_LIMIT', '512M'); do wp-config.php, ale jeszcze co najmniej dwa razy w tygodniu moja strona nie jest dostępna i dzienniki pełne wiadomości wymienionych powyżej.

Moje witryny nie generują dużego ruchu, serwer ma 16 GB pamięci RAM i połowę pustego dysku SSD o pojemności 512 GB. Pomóż mi zrozumieć lub dowiedzieć się, co jest przyczyną problemu, ponieważ bieżące dzienniki mówią bardzo niewiele.

Update 1

znalazłem ciekawą linię przede wszystkim te VirtualAlloc i VirtualFree zawiedzie:

[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

Wygląda na to, że był ofiarą włamania, niepełnosprawnego xmlprc dodając te wiersze do. Plik htaccess:

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

Mam nadzieję, że to pomoże.

Update 2 - kilka dni później

Wygląda jak problem został rozwiązany, od czasu do czasu znaleźć klientowi odmówiono błędami konfiguracji serwera, ale strona nie zawiedzie.

Update 3 - kilka tygodni później

VirtualAlloc() i VirtualFree() nie są z powrotem, bez żadnych podejrzanych wniosków skrypcie dziennika jest tylko pełne wspomniano zawodzi i moje sklepy zalogować posiada kilka wspomniano się błędów pamięci. Czy jest możliwe, aby niektóre błędy Apache były bardziej szczegółowe/szczegółowe, aby dowiedzieć się, które polecenie wyzwala błąd niewystarczającej pamięci masowej lub jaki próbowano uzyskać dostęp do nieprawidłowego adresu?

Update 4 - kilka miesięcy później

po pewnym czasie regularnego korzystania z serwisu i ponowne uruchomienie Apache od czasu do czasu błędy właśnie zatrzymany, podejrzewam, niektóre z używanych wtyczek został zaktualizowany i teraz pamięć robi 't wyciek i wszystko działa do następnego błędu ...

+0

Mam dokładnie ten problem. Jedyne, co mogę wymyślić to to, że Xampp jest 32-bitowy, więc nie może zająć tyle pamięci, ile potrzebuje na miejscu produkcji. –

Odpowiedz

3

Nie jestem pewien, czy to pomoże, ponieważ WordPress nie korzysta z macierzystych sesji PHP, , ale może być, że niektóre wtyczki są używane.

Moja sytuacja: Windows OS, PHP 7.0.6 - 7.0.11
VirtuaAlloc nie działa z powodu użycia sesji php. http://php.net/manual/en/features.sessions.php Usunąłem/zastąpiłem wszystkie funkcje php session_ własnymi kopalniami.

Howto powielać: session_start(); parsować ogromny plik xml (150 MB lub więcej) uruchamiać wielokrotnie ten sam skrypt w tym samym czasie na serwerze Apache.