LINUX.ORG.RU

PHP 8.2 всегда нехватает памяти

 ,


0

2

Есть простой скрипт на php

<?php

echo time();

?>

При запуске из консоли (php /home/site.com/tmp.php) работает отлично. Но вот при обращении с веба (http://site.com/tmp.php) заканчивается ошибкой в логах о нехватке памяти.

2023/01/23 13:02:32 [error] 2126#2126: *178 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Allowed memory size of 18874368 bytes exhausted (tried to allocate 94872324898096 bytes) in Unknown on line 0" while reading response header from upstream, client: xxx.35.12.125, server: site.com, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "site.com", referrer: "http://site.com/tmp.php"

Сервер голый, сайт тестовый (без движка) просто 1 сценарий tmp.php. Связка nginx + php8.2

Понятно что для такого простого сценария на php хватит и 16M памяти, но я пробовал ставить ограничения в /etc/php/8.2/fpm/php.ini memory_limit = 16M memory_limit = 200M memory_limit = 500M Во всех вышеперечисленных случаях памяти не хватает.

В какую строну копать?

Ответ на: комментарий от Infra_HDC

Не понял Вашей задумки, результаты такие: wget http://site.com/tmp.php

--2023-01-23 13:33:37--  http://site.com/tmp.php
Resolving site.com (site.com)... xxx.xx.xxx.xxx
Connecting to site.com (site.com)|xxx.xx.xxx.xxx|:80... connected.
HTTP request sent, awaiting response... 502 Bad Gateway
2023-01-23 13:33:37 ERROR 502: Bad Gateway.

tail /home/site.com/log/error.log

2023/01/23 13:33:37 [error] 593#593: *9 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Allowed memory size of 18874368 bytes exhausted (tried to allocate 94183424269616 bytes) in Unknown on line 0" while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: site.com, request: "GET /tmp.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "site.com"
2023/01/23 13:33:37 [error] 593#593: *9 upstream sent unexpected FastCGI record: 3 while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: site.com, request: "GET /tmp.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "site.com"

morkovkin
() автор топика

request: «GET /favicon.ico HTTP/1.1»

Это ошибка на совершенно другой запрос

В какую строну копать?

В сторону настроек вебсервера. Очевидно реально работает не тот пхп код, что вы ожидаете.

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)

… но я пробовал ставить ограничения в /etc/php/8.2/fpm/php.ini memory_limit = …

Лимит памяти для процессов PHP-FPM устанавливается в другом месте - в conf-файлах в директории /etc/php/8.2/fpm/pool.d.
Добавь/исправь там параметр:

php_admin_value[memory_limit] = ...M
vinvlad ★★
()

Я бы начал со сравнения выхлопов «php -i» и «php-fpm -i»

Сравнил бы список расширений php и их настройки.

У тебя случаем размер памяти для opcache не в байтах указан?

opcache обычно для cli отключен.

vel ★★★★★
()

PHP пытается выделить память размером 94872324898096 байт, что недопустимо для сервера с любым огранич. памяти. проверь, чтобы PHP-FPM настроен с малым знач. pm.max_children (он ограничивает кол-во процессов PHP-FPM).

versetty777
()