Как исправить ошибку PHP Fatal error: Out of memory?

301
24 августа 2017, 22:11

Здравствуйте. У меня не работает сервер - ошибка 502 в течение 25 минут, в логах вижу следующие:

2017/08/19 19:36:30 [error] 7652#0: *978 upstream sent unexpected FastCGI record: 3 while reading response header from upstream, client: 207.46.13.158, server: vamdodoma.ru, request: "GET /catalog/2-mestnye-divany/S39861885.html/ HTTP/1.1", upstream: "fastcgi://unix:/var/php-nginx/14617404421463.sock/socket:", host: "vamdodoma.ru"

2017/08/19 19:36:31 [error] 7651#0: *622 FastCGI sent in stderr: "PHP Fatal error: Out of memory (allocated 262144) (tried to allocate 8589938688 bytes) in Unknown on line 0" while reading response header from upstream, client: 46.237.19.175, server: vamdodoma.ru, request: "GET /api/app.getCities HTTP/1.1", upstream: "fastcgi://unix:/var/php-nginx/14617404421463.sock/socket:", host: "vamdodoma.ru"

2017/08/19 19:36:31 [error] 7651#0: *622 upstream sent unexpected FastCGI record: 3 while reading response header from upstream, client: 46.237.19.175, server: vamdodoma.ru, request: "GET /api/app.getCities HTTP/1.1", upstream: "fastcgi://unix:/var/php-nginx/14617404421463.sock/socket:", host: "vamdodoma.ru"

сервер PHP, NGINX, MySQL

в php.ini memory_limit = 48000M

Почему не хватает памяти? Как можно победить эту проблему, чтобы сайт не лежал по 25 минут? Заранее благодарен за помощь!

Answer 1

Так в логе же написан и домен и request. Найдите кто обработчик этого request и копайте его.

PHP Fatal error: Out of memory (allocated 262144) (tried to allocate 8589938688 bytes) in Unknown on line 0

Что в ошибке ещё сказано примечательного:

  • выделил скрипт себе только 256кб, ещё 8гб он только пытается выделить
  • при том, что интересно, пытается взять 8гб памяти одним куском
  • пытается взять где-то неявно, раз сообщение об ошибке не показывает конкретный скрипт. Например, в подключаемой PECL-библиотеке или скомпилированной встроенной
  • памяти свободной нет именно физически. Если запрос упирается в memory_limit - то сообщение другое, Allowed memory size of X bytes exhausted

Вы что-то странное делаете в коде. Берите проблемный запрос, профилировщик по вкусу и исследуете код, куда вы деваете память. Ну или ставить ещё памяти, в современный сервер можно и несколько ТБ поставить, есть ещё куда расти ;-)

READ ALSO
Laravel плюрализация

Laravel плюрализация

Пытаюсь сделать локализацию/плюрализацию со множеством вариантовФайл перевода:

266
Не хочет обновлять данные в БД

Не хочет обновлять данные в БД

и вот здесь не хочет обновлять имяПросто сбрасывается и всё остается прежним

197
Как поставить картинку фоном на сайте php+css? [требует правки]

Как поставить картинку фоном на сайте php+css? [требует правки]

Как поставить картинку фоном на сайте php+css?

191
Как из строки получить подстроку по регулярному выражению PHP

Как из строки получить подстроку по регулярному выражению PHP

Есть строка с HTML кодом и регулярка, которая находит все h3 заголовкиНо не могу найти в php функцию, которая возвращает подстроку по регулярному...

256