Я боролся с этой проблемой уже несколько месяцев.У меня есть две разные системы, каждая с разными настройками и кодом PHP, но обе имеют абсолютно одинаковую проблему.
Мой сервер выдаст ошибку 500, и журналы будут заполнены проблемами выделения памяти до перезагрузки Apache.
Система ONE
ОС: Windows server 2008
XAMPP: PHP 7.1.9 / Apache 2.4.27
База кода: AНебольшой веб-сайт Laravel Ничего особенного
Система ДВА
ОС: Windows server 2016
XAMPP: PHP 7.2.3.0 / Apache 2.4.29
Кодовая база: некоторые длительные процессы php, около 2 минут.
Ошибки Apache
VirtualFree () не удалось: [0x000001e7] Попытка получить доступ к неверному адресу.Ошибка VirtualAlloc (): [0x00000008] Недостаточно памяти для обработки этой команды.Ошибка VirtualFree (): [0x000001e7] Попытка получить доступ к неверному адресу.
Ошибки PHP
[Пн 21 мая 09: 27: 42.078308 2018] [php7: error][pid 10236: tid 12736] [клиент 43.245.8.13:1553] Неустранимая ошибка PHP: недостаточно памяти (выделено 2097152) (попытка выделить 6626884 байта) в C: \ xampp \ htdocs \ * \ vendor \ doctrine \ dbal \ lib\ Doctrine \ DBAL \ Driver \ PDOStatement.php в строке 141, реферер: http://m.facebook.com/
[Пн 21 мая 09: 28: 12.703338 2018] [php7: ошибка] [pid 10236: tid 12736] [клиент122.170.190.70:63513] Неустранимая ошибка PHP: недостаточно памяти (выделено 73400320) (попытка выделить 4096 байт) в C: \ xampp \ htdocs \ * \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Model.php on line 294
[Пн 21 мая 09: 28: 14.640812 2018] [php7: error] [pid 10236: tid 12736] [client 122.170.190.70:63529] Неустранимая ошибка PHP: недостаточно памяти (выделено37748736) (попытался выделить 4096 байт) в C: \ xampp \ htdocs \ * \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Model.php в строке 294
[Пн 21 мая 09: 28: 19.218972 2018] [php7: error] [pid 10236: tid 12736] [client 157.49.220.122:64984] Неустранимая ошибка PHP: недостаточно памяти (выделено 20971520) (попыталсявыделить 4096 байт) в C: \ xampp \ htdocs \ * \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Concerns \ HasEvents.php в строке 161, реферер: https://www.facebook.com/
[пн21 мая 09: 28: 27.125182 2018] [php7: error] [pid 10236: tid 12704] [client 150.143.104.159:12178] Неустранимая ошибка PHP: недостаточно памяти (выделено 12582912) (попытка выделить 131072 байта) в C:\ xampp \ htdocs \ * \ vendor \ doctrine \ dbal \ lib \ Doctrine \ DBAL \ Driver \ PDOStatement.php в строке 141
[Пн 21 мая 09: 28: 27.125182 2018] [php7: ошибка] [pid 10236: tid 12704] [client 150.143.104.159:12178] Неустранимая ошибка PHP: недостаточно памяти (выделено 12582912) (попытка выделить 32768 байт) в C: \ xampp \ htdocs \ * \ vendor \ laravel \ framework \ src \Освещение \ Foundation \ Exceptions \ Handler.php в строке 451
[Пн 21 мая 09: 28: 27.125182 2018] [php7: ошибка] [pid 10236: tid 12704] [client 150.143.104.159:12178] Неустранимая ошибка PHP: Недостаточно памяти (выделено 12582912) (попытка выделить 20480 байт) в поле «Неизвестно» в строке 0
Что вызывает ошибки
Ошибки появляются случайно, но не сразу после перезапуска Apache.Тем не менее, как если бы он занимал слишком много памяти, у меня на сервере 6 ГБ свободного места по 8 ГБ.
Что я пробовал до сих пор
Различные изменения в php.ini,например, memory_limit=1200M
, а также в настройках скрипта ini_set('memory_limit', -1);
Настройки конфигурации Apache
ThreadStackSize 56*1024*1024
ThreadsPerChild 150
MaxConnectionsPerChild 0
RLimitMEM 99999999999 99999999999999
Однако после перезапуска я заметил, что там написано
AH00118: RLimitMEM not supported on this platform
IЯ видел эти ошибки, разбросанные по Интернету, и никто, кажется, никогда не находил решения для них.Мне нужен PHP на Windows, я начинаю думать, что мне стоит попробовать IIS.
Есть ли другие рекомендации по настройке Apache или что еще можно попробовать?