Оптимизация расхода памяти

Нашли ошибку ? Пишите в этот раздел

Модератор: core team

evorios
Новенький
Сообщения: 3
Зарегистрирован: Пт ноя 15, 2013 3:01 am

Сообщение evorios » Сб ноя 23, 2013 2:03 pm

Вчера вечером при обращении к списку галерей на ровном месте получил ошибку
[22-Nov-2013 21:28:50 UTC] PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 19456 bytes) in /public_html/vendor/clevertech/yii-booster/src/widgets/TbBaseMenu.php on line 172

Но опция "php_value memory_limit 32M" спасла положение.

Посему у меня вопрос: почему обращение к списку галерей съедает больше памяти, чем обращение к любой из галерей?
Типичные значения потребления памяти:
1) кешированных запросов:
- для страниц сайта ~7-8 Мб
- для галерей ~12-13 Мб
- для списка галерей 18 Мб

2) первичных запросов: все на ~4-5 Мб выше.

Аватара пользователя
xoma
Администратор
Сообщения: 1934
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Вт дек 24, 2013 12:47 am

На текущей версии повторяется ?
Можете сообщить версию пхп, какой сервер, есть ли кешер ?
http://yupe.ru/subscribe - интересное от команды "Юпи!"

vrembo
Новенький
Сообщения: 3
Зарегистрирован: Вт май 16, 2017 12:14 am

Re: Оптимизация расхода памяти

Сообщение vrembo » Вт май 16, 2017 12:59 am

Все повторяется!
Вопрос актуальный! Ответа нет с 2013 года!
Стал выводить Fatal error: Allowed memory size of... на ровном месте, при попытке перейти в раздел "Магазин" в админке!
ВСе произошло после заполнения базы товаров! сначала стал писать на фронтенде что-то вроде wrong delimeter mb_string(), потом, очистив базу товаров и удалив содержимое папки /protected/runtime/cache/, вроде, с горем пополам, ожил... заполнил снова базу - во фронтенде шевелится, а вот в админке снова завалился.
Сырой до некуда движок! Чуть что не так - сразу падает с кучей ошибок! Может почаще проверку переменных организовывать? ..ну, там, "isset($var)", "$var!=null", "count(array())"... из БД NULL может прийти опять же ... можно бы и проверить..?!
Парсер мой на коленке за 20 минут писан, вот category_id в NULL и выставил в таблицах - проблему то я быстро нашел и исправил... а вот движок мертво завалился... пока не допер где кеш ручками снести - шансов не было! Уже если валятся ошибки - в исключения их можно добавить? ..И сообщение типа: "Вот так незадача! Ошибка Е+100500 - Кривые руки толи у Вас, толи у нас..., но а вот <a href="чистить кеш">кеш попробуйте чистить</a> - должно помочь!".

Два раза я его завалил в первые же 15 минут использования... а всего-то загнал парсером пару тыщ строк в таблицы товаров и категорий! Очень жаль((( он мне даже понравился по началу!

vrembo
Новенький
Сообщения: 3
Зарегистрирован: Вт май 16, 2017 12:14 am

Re: Оптимизация расхода памяти

Сообщение vrembo » Вт май 16, 2017 8:49 am

Переполнение буфферной памяти (heap или как там она для php правильно называется?!)... в массив пихают данные до тех пор, пока память не заканчивается!
в .htaccess в папке public добавляем строчку
php_value memory_limit 512M
и продолжаем ловить дырки в движке! )))
Метод выделения бОльшего объема памяти - совсем не панацея, но судя, что ответов не было с 2013года - очень даже решение проблемы!

Разработчикам движка: либо ограничте количество элементов, пихаемых в массив за один проход, либо выносите админку в отдельную папку с отдельным .htaccess. Как вариант еще - проверить количество элементов, доставаемых из БД и сделать ini_set('memory_limit', '999M');
А вообще - не гоже всю БД загонять в массив одним махом! Если у меня база будет на 3-5 миллионов записей - такими темпами мне под нее половину Дата-центра арендовать придется!)))

Аватара пользователя
xoma
Администратор
Сообщения: 1934
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Re: Оптимизация расхода памяти

Сообщение xoma » Вт май 16, 2017 9:01 am

Может вы дадите больше конкретики? Где именно и какие данные пихаются в массив полностью?
Какая версия php? Какая версия движка?

Мы рады, что Вам понравилось изначально - есть шанс помочь нам стать еще лучше и поправить все ошибки, а не голословно кричать на форуме!

Мир!
http://yupe.ru/subscribe - интересное от команды "Юпи!"

vrembo
Новенький
Сообщения: 3
Зарегистрирован: Вт май 16, 2017 12:14 am

Re: Оптимизация расхода памяти

Сообщение vrembo » Вт май 16, 2017 10:11 am

Ну... так то я и не кричал, вроде.. извините, если перегнул! )) по конкретике - вроде более-менее написал же! Если, например, category_id в БД окажется NULL,- движок падает с ошибкой и даже если потом в БД все поправить - движок все равно лежит - не работает ни админка, ни фронт!
Вот данные :"Вы используете Yii версии 1.1.17 , Yupe! версия 1.2-dev , версия php 5.4.16"

В админке при переходе в раздел "Магазин", организация списка товаров сделана постраничная (по крайней мере внешне) - это гуд! НО. список категорий при этом загоняется целиком ( и не спорьте - ЦЕЛИКОМ! чтобы это понять - даже код смотреть не надо - select в фильтре выводит их все разом...)! Если у меня 10-20 категрий - это роли не сыграет... даже наоборот! А вот, если категорий у меня много - начинаются проблемы вышеописанные... получается, что процентов 80-90 от heap забито массивами с товарами и массивами с пагинацией и прочими данными - сессии там, модули, меню и пр... а тут - раз!.. и не хилый такой массив с категориями прилетает... результат -Heap overflow! аналогичная ситуация, думается, была и с галлереей двумя постами выше в 2013году.
Не думаю, что версия ПХП играет тут ключевую роль, т.к. если переменной не существует, а мы к ней обращаемся - это будет ошибка даже в любом языке программирования! Если из БД приходит NULL, а мы его обрабатываем как integer - это ошибка! )
Отствие строгой типизации данных в PHP - это, конечно, хорошо! экономит много времени ввиду отстуствия необходимости приведения типов... и пр., но, как результат - программист начинает лениться проверять входные данные, надеясь на ПХП... результат - нестабильная работа кода!

Аватара пользователя
xoma
Администратор
Сообщения: 1934
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Re: Оптимизация расхода памяти

Сообщение xoma » Вт май 16, 2017 10:53 am

Можете приложить ваш дамп БД со всеми данными? Потому как:

1 У товаров спокойно может быть NULL в категории вот пример https://demo.yupe.ru/store/noutbuk-leno ... g5030.html
2 Тестировали на примерно 1000 категорий с уровнем вложенности 3 - все ок. У вас больше 1000 категорий или очень глубокая вложенность?
http://yupe.ru/subscribe - интересное от команды "Юпи!"


Вернуться в «Сообщения об ошибках»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость