@kopcapuk

Почему такой неадекватный расход памяти?

Подскажите плз, почему при вызове `php artisan schedule:run` на серваке с `memory_limit='4000M'` и оперативной 8гб результатом является обрыв скрипта с ошибкой:
Allowed memory size of 4194304000 bytes exhausted (tried to allocate 3219132416 bytes)

А при вызове такой же команды локально, с таким же лимитом, всё нормально отрабатывает, спустя секунд 7.

И прикол в том, что это значение 671bdc350ed7f454287273.jpeg доходит до ~ 6.3 ГБ, если `memory_limit` поставить 100000M и более.
То есть сколько бы я memory_limit не поставил, отжор памяти колоссальный, никак не связанный с реальным потреблением. И в таком случае процесс обрывается сообщением Killed!
  • Вопрос задан
  • 497 просмотров
Решения вопроса 1
У утечки памяти может быть миллион разных причин. Искать их, просто читая код - это искать иголку в стоге сена.

Поэтому, умные люди придумали профайлинг. Мы собираем статистику и пытаемся её отобразить в более-менее наглядном виде.

Например, есть вот такой инструмент
https://github.com/arnaud-lb/php-memory-profiler
Readme очень подробный, и можно, в принципе, им и обойтись.

Есть ещё вот такие видео, в которых всё более комплексно и подробно

https://www.youtube.com/watch?v=NNMp-97rk9c&t=219s

https://www.youtube.com/watch?v=56I5C0NYjv8&t=293s

Удачи в поисках!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы