Добавление продукта в Magento "Фатальная ошибка: Разрешенный объем памяти 41943040 байт исчерпан (пытался выделить 139564 байта)"


Я новичок в Magento и вижу, что это сложная система с большой глубиной, но я столкнулся со многими головными болями с тех пор, как перешел на нее с OpenCart. В первую очередь это ошибка, которую я получаю при попытке добавить продукт:

"Фатальная ошибка: Разрешенный объем памяти 41943040 байт исчерпан (пытался выделить 139564 байта) в /home/vainlane/public_html/mag/app/code/core/Mage/Core/Block/Abstract.php на линии 944"

В в htaccess есть следующие строки:

php_value memory_limit 512M
php_value max_execution_time 38000

Я изменил исходные 256 на 512, но никакой разницы. Кто-нибудь может указать мне здесь правильное направление? Довольно озадаченный. Я использую эту установку в конфигурации cPanel на хостинге реселлера.

Author: Marius, 2014-07-28

6 answers

Жестко закодированный 32-метровый memory_limit.

Если вы запускаете это с общего сервера, ваш memory_limit может быть заблокирован до 32 МБ, поэтому вы вынуждены справедливо делиться ресурсами с другими пользователями на сервере. Magento плохо работает на общих серверах, которые, кстати, не были оптимизированы для Magento.

Возможно, ваш веб-сервер не настроен на использование memory_limit из .htaccess и, следовательно, вам потребуется использовать файл php.ini для настройки памяти. Смотрите файл php.ini.sample, который Magento устанавливает в свою корневую папку, для того, что php.ini содержимое файла должно быть.

В противном случае обратитесь к своему поставщику услуг хостинга и попросите его увеличить лимит до 512 млн.

 2
Author: Fiasco Labs, 2014-07-28 22:45:58

Вы можете временно исправить это, добавив эту строку в свой index.php

ini_set('memory_limit','512M');
 2
Author: Magebuzz, 2014-07-29 04:12:18
Allowed memory size of 41943040 bytes ...

... указывает на абсурдно низкий лимит памяти в 40 МБ или около того (Magento должен иметь не менее 256 МБ, рекомендуемое значение 512 МБ или более).

Ограничение памяти может быть настроено в следующих местах:

  1. php.ini
  2. .файл htaccess
  3. php-скрипты
 1
Author: Pronto, 2014-07-29 07:15:40

Установлено значение 2048M - все еще получаю ошибку :

Неустранимая ошибка PHP: Разрешенный объем памяти 2147483648 байт исчерпан (пытался выделить 262144 байта) в неизвестном в строке 0

Какого черта эта штука съедает так много чертовой памяти?

 1
Author: Scott, 2017-11-13 23:47:54

Это может быть связано с нехваткой ресурсов сервера для запуска Magento. Здесь вы можете увидеть список из них, но, на мой взгляд, они довольно низкие.

 0
Author: mbalparda, 2014-07-28 20:26:20

Я столкнулся с этой проблемой после обновления с magento 1.7.0.2 до 1.9.3.7.

После отслеживания журналов в поведении клиента не было ничего плохого. Он просто прошелся по нескольким категориям, и вдруг все пошло наперекосяк.

Несмотря на то, что все страницы работали правильно с ограничением памяти в 256 МБ, для этого конкретного клиента это не удавалось. поэтому, следуя всем советам, я продолжал увеличивать память до 4 Гб, и это не сработало... значит, что-то еще не так.

Казалось, что могут возникнуть 2 потенциальные проблемы:

- бесконечный цикл - чрезвычайно медленная задача обработки

Я много чего перепробовал, так как журналы magento, php и nginx не давали много информации.

Я обнаружил, что если вы удалите сеанс клиента из базы данных или папки var/sessions (в зависимости от вашей реализации), ошибка 500 исчезнет. (хотя это не объясняло, было ли это связано с бесконечным циклом или просто медленно обработка).

Для этого вы можете найти ip-адрес пользователя в журналах сервера, и запуск grep в папку сеансов или запрос в таблице core_session приведет вас к сеансу клиента.

В качестве потенциального некрасивого решения вы могли бы создать скрипт bash, который работает с журналами сервера в поисках этой ошибки, найти сеанс и удалить его. То же самое вы можете сделать с помощью loggly alerts, amazon CloudWatch и т.д.

Я продолжал расследование, чтобы ответить на мой вопрос, и подождал, пока следующий клиент не столкнется с той же проблемой, затем я увеличил максимальное время выполнения до 6 минут и память до 6 гб в надежде, что, наконец, magento завершит загрузку этих запросов (без нехватки памяти или времени выполнения), и это сработало. После завершения запроса (заняло несколько минут) ошибка 500 исчезла для этого клиента.

Так что это был не бесконечный цикл, это была проблема с производительностью... хотя это и не казалось так.

Я реализовано логично, и я жду, когда это произойдет снова, чтобы я мог немедленно активировать профилировщик, чтобы определить, откуда происходит утечка памяти. Я обновлю этот ответ, если добьюсь успеха.

 0
Author: paterlinimatias, 2018-03-13 22:38:51