За последние 24 часа нас посетил 19121 программист и 1893 робота. Сейчас ищут 907 программистов ...

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

Тема в разделе "PHP для новичков", создана пользователем vikrorpert, 7 янв 2019.

  1. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    есть такая либа https://github.com/Invertus/brad
    запуск в консоли файл brad.cron.php
    проблема в том что оно много ест памяти 6гб и более
    как найти утечку?
     
    #1 vikrorpert, 7 янв 2019
    Последнее редактирование: 7 янв 2019
  2. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    никаких идей?
     
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    что оно делает?
     
  4. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    импортирует товары в elasticsearch
     
  5. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Ну там походу массив адовый какой-то.
    Копаться лень, и скорее всего не только мне.
     
  6. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    может есть методики отладки?
    ну кроме пошагового xdebug
    я пытался вызывать memory_get_usage, затем unset но не помогает
     
  7. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Просто возможно, что апишка по тупому реализована и никаких утечек нет :)
    Бывает, что апишку реализовали когда в магазине было пару тыщ товаров, и апишка вываливала сразу всё и было норм.
    Магазин вырос, а апишка осталась. Надо прикручивать пагинациихуяции
     
  8. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    возможно
    а как искать это узкое место?
     
  9. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Реж limit_memory_size и смотри где будет спотыкаться.
     
  10. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
  11. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Ну всё правильно. Складывает в массив результаты запроса и массив разростается и озу кончается.
    Ты походу так зарезал лимит что до товаров дело не доходит а уже на категориях падает.
    --- Добавлено ---
    вот пример апишки в которой реализована пагинация.
    вот пример запроса товаров (если передать заголовок "Accept:application/json", то данные вернутся JSON формате).
    внизу раздел "meta" в котором указано, сколько еще спагинированых страниц существует для этого запроса.
     
  12. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    у меня установлен лимит памяти 6 гб, неужели этот цикл съедает всю память?
     
  13. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
  14. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Тышпрограммист. Разбирайся :)
    За тебя этого ни кто не сделает.
    Я в этой либе не копался, а лишь предположил.
    --- Добавлено ---
    Вряд ли там что-то сверхсложное происходит.
    Тебе придется изучить, как она работает.
     
    Алекс8 нравится это.
  15. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    вопрос был в том как обычно отлаживать утечки памяти
     
  16. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    почему ошибка Allowed memory size of bytes exhausted может вылазить в разных местах кода?
     
  17. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    в зависимости от разного memory_limit
    ini_set('memory_limit', '128M');
     
  18. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    потому, что в разных местах кончается память :)
    --- Добавлено ---
    у тебя памяти 128 мегабайт
    о каких 6 гигах ты говоришь ?
    или было 6G ?
     
  19. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    я счас тестирую с разными размерами памяти
    хочу найти место где происходит утечка поэтому уменьшаю память
    плюс чтобы скрипт быстрее закончил работу
    получается на каждом шагу скрипта растет память?
    и на любой конструкции память может кончиться? даже если на этой строке нету утечки?
     
  20. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    память уходит (основная её часть) не на конструкции, а на переменные, массивы и объекты
    тебе нужно найти то место, которое собирает ацкий массив товаров и прикрутить пагинацию
     
    vikrorpert нравится это.