Утечка памяти

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Утечка памяти

Сообщение zelenin »

делал как-то жирную крон-команду-парсер, сохранявшую результаты в AR-модели. Минут через 20-30 работы скрипт умирал с недостатком памяти.
Начал применять все практики, описанные здесь и вообще все, что можно. Скрипт все равно умирал.
Переписал на ДАО - ноль реакции.
В итоге просто стал убивать регулярно и перезапускать.

Остается полагаться только на родной сборщик мусора.
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Утечка памяти

Сообщение astronin »

vismut писал(а):
astronin писал(а):в принципе unset очищает память практически полностью, оставляя какие-то крохи байт где-то на поддерживающие механизмы (проверил на 5.5)
запустил в цикле $object = new SomeClass(); unset($object); память вообще ни как не растет по ходу цикла
кстати, присвоение null вообще ни как не помогает, хотя в предыдущих версиях может и помогала...

наверное вам стоит проверить свое приложение, и большая утечка где-то еще
может быть даже фреймворк где-то сжирает, тут вам уже надо пошагово проверять увеличение помяти в кодах фреймворка...
Пример с простым объектом не актуален)
Лучше сделайте так и скажите что тоже не растет)

Код: Выделить всё

//Создаем объект ActiveRecord
$object = SomeModel::findOne(1);
        
//Удаляем объект из памяти
unset($object);
Если и так у вас не будет отжирать память, тогда действительно странно)
Поэтому я и написал последнее предложение про фреймворк, возможно там что-то не обнуляется через unset, надо проверять. В полне возможно, что где-то остаются ссылающиеся ссылки, которые php не удаляет, хотя вы ему и указываете.
В общем надо провести небольшое иследование кода, что стоит за findOne(). Перед этим почитав http://php.net/manual/ru/features.gc.php
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Утечка памяти

Сообщение slavcodev »

shamyyl писал(а)://Создаем объект ActiveRecord
$mailer = Mailer::findOne(20);
Не забывай, создавая объект АР, создается еще Query, Db, Schema и много еще чего, что не удаляется при удалении объекта АР, а кешируется для следующих экземпляров.

Можно попробовать, замерить разницу памяти, между созданием и удалением второго экземпляра.
Жду Yii 3!
vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Утечка памяти

Сообщение vismut »

slavcodev писал(а):
shamyyl писал(а)://Создаем объект ActiveRecord
$mailer = Mailer::findOne(20);
Не забывай, создавая объект АР, создается еще Query, Db, Schema и много еще чего, что не удаляется при удалении объекта АР, а кешируется для следующих экземпляров.

Можно попробовать, замерить разницу памяти, между созданием и удалением второго экземпляра.
проблема в том состоит, что foreach-ем доставали данные пачками по 100, и работали с каждой записью, в итоге происходило переполнение памяти. каждый созданый экземпляр AR жрет память..
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Утечка памяти

Сообщение astronin »

ну достаньте 2 записи для тестов, какая разница. должны же разобраться, что именно не умирает и, что еще интересней, не перезаписывается а добавляется
каждый и будет жрать...
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Утечка памяти

Сообщение slavcodev »

Возможно будут полезны эти два метода
https://github.com/yiisoft/yii2/blob/ma ... #L139:L208
Жду Yii 3!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Утечка памяти

Сообщение zelenin »

slavcodev писал(а):Возможно будут полезны эти два метода
https://github.com/yiisoft/yii2/blob/ma ... #L139:L208
чуть выше пишет, что пачками и получал данные
buter747
Сообщения: 4
Зарегистрирован: 2019.10.11, 20:22

Re: Утечка памяти

Сообщение buter747 »

zelenin писал(а): 2015.01.16, 11:52 делал как-то жирную крон-команду-парсер, сохранявшую результаты в AR-модели. Минут через 20-30 работы скрипт умирал с недостатком памяти.
Начал применять все практики, описанные здесь и вообще все, что можно. Скрипт все равно умирал.
Переписал на ДАО - ноль реакции.
В итоге просто стал убивать регулярно и перезапускать.

Остается полагаться только на родной сборщик мусора.
Здравствуйте!
У меня очень схожая проблема.
Скажите, а что за шесть лет проблема с нарастанием памяти у процессов httpd либо php-cgi.exe так не решена?

2021 год на дворе уже.... :shock:
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Утечка памяти

Сообщение yiijeka »

Изменилось.
http://sandbox.onlinephpfunctions.com/c ... f1fb5b3cb9

Поиграйтесь с версиями php
Ответить