Поиск и устранение утечек памяти в PHP
Демонстрационный проект стрима Валентина Удальцова на канале PHP Point.
Упомянутые материалы
- авторский канал Пых в Telegram
- Правильная регистрация консольных команд Symfony в DI
- Symfony ProgressBar
- Symfony Stopwatch
- пример MemoryInterrupter для предотвращения memory exhausted в воркерах
- про параметр $real_usage в memory_get_usage()
- must-read про сборку мусора на официальном сайте PHP
- тикеты про утечки памяти на bugs.php.net
- issue про reset в Symfony Console
Расширение php-memprof
- https://github.com/arnaud-lb/php-memory-profiler
- под Mac устанавливаем Judy из исходников
pecl install memprof
brew install qcachegrind
memprof_dump_callgrind(fopen($projectDir.'callgrind.dump', 'wb'));
MEMPROF_PROFILE=1 bin/console leak --env=prod
qcachegrind callgrind.dump
Расширение php-meminfo
- https://github.com/BitOne/php-meminfo
- клонируем мой форк
git clone git@github.com:vudaltsov/php-meminfo.git
+git checkout php74_support
- устанавливаем по инструкции в
README.md
- подробная инструкция по анализу