Проблема с потреблением оперативной памяти



  • @venom777, а раньше - это когда? На каких версиях?
    а несколько тысяч так и так нормально работать не будет. Уже сто раз тут обсуждалось, что лучше на серваке таком поднять несколько виртуалок и запускать несколько скриптов с меньшим количеством потоков.



  • @Antonio раньше - это месяц назад когда множество новшеств ввел в скрипт, а какая версия была месяц назад уже и не помню, или 20.7.6 или 20.6.4, но в 20.6.4 точно работало адекватно с озу, но скрипт мой поменялся недавно, поэтому пока не могу утверждать что дело в версии.

    upd Проверил 20.8.7, 20.7.4, 20.6.4, 20.7.6 - результат на тестовом скрипте одинаковый.
    Важно - тестовой скрипт и основной скрипт это две разные проблемы, сейчас хочу понять нормально ли такое потребление оперативной памяти на простом проекте, а потом уже пойму и сделаю выводы по основному скрипту.

    upd 2
    Все еще продолжаю тестировать...
    Новая партия тестов.

    Пробовал проекты с просто открытым браузером и затем с загруженной страницей - отличий нет (хотя когда загрузил 300 вкладок bablosoft.com то воркеры потребляли изначально 37mb затем во время работы циклов стали потреблять >40, процесс баса так же рос).

    Разницы между: исп. ресурса файла, исп. ресурса базы или не использовании ресурсов - разницы нет. Только более заметно потребление памяти и не более. Если запускать менее чем в сотни потоков, то рост потребления оперативы будет сложно заметить т.к. это будет сотня байт на поток в 30 секунд, наверное и нужно будет ждать часов 5 что бы увидеть потребление.

    Нашел инфу о том, что 3 месяца назад у меня был файл подкачки 22гб и он был почти весь занят, вернул такое же значение, улучшений на рабочем скрипте нет.
    Подумал, что возможно бас сгружает данные из переменных которые постоянно используются в скрипте и поэтому я столкнулся с этими проблемами т.к. переделал скрипт как раз что бы хранить больше статичной инфы в массивах и меньше дергать get. Переделал быстро скрипт что бы не хранил данные в переменных, а получал их всегда из файла или по get запросу - какого-либо результата нет или его сложно отследить.

    Последние тесты которые я проводил только на 20.8.7 показали, что все таки очистка памяти производится при завершении потока, при сбросе с галочкой перезапуска процесса очистка не производится. Вроде как можно использовать это как костыль, переделаю рабочий скрипт и посмотрю как это будет работать в реальных загруженных условиях.


  • administrators

    Минимальный скрипт
    https://drive.google.com/file/d/1Keilcjmw3iznnzHdTx26c5OMW-dOTgUV/view?usp=sharing

    Я не знаю, как работает выделение памяти в js движке, который юзает БАС, но уверен, что оно далеко от того, чтобы просто выделять ее когда создается новая переменная, или освобождать ее, когда она перестает использоваться. Скорее всего там используются пулы или что-то подобное. На видео меньше минуты и это не показатель. Я делаю так - ставлю скрипт на день и смотрю как изменяется набор памяти. Если он монотонно растет, то можно говорить об утечке.
    Сейчас поставил бесконечный цикл с одним действием внутри - сон. Вечером посмотрю что будет.
    Если это действительно утечка, тогда обязательно исправлю.



  • This post is deleted!

  • administrators

    @venom777 Да, подтверждаю проблему. Сегодня-завтра решу.


  • administrators

    @aveko Вам нужно запустить профайлер и проверить, что занимает больше всего процессорного времени.
    И создайте, пожалуйста, другую тему.



  • @support Если вы не будете пересматривать весь форум, то хочу обратить внимание на еще одну мою тему где похоже найден баг с node js.


  • administrators

    @venom777 Нашел 1 утечку памяти и 3 места, где она освобождается несвоевременно.
    В одном случае была моя ошибка, в 3 других ошибка используемых библиотек.
    В каждом случае было найдено решение.
    Одна из утечек была связана с анимацией в трее, поэтому пока ее отключил.

    Тестировал на 2 ваших скриптах и на бесконечном цикле со сном.
    В одном из тестов оставлял скрипт на 12 часов. На протяжении больше 10 часов количество выделенной памяти вообще не менялось, поэтому отключил.
    Если в потоке был бесконечный цикл, то в какой-то момент набор памяти переставал увеличиваться(примерно через 10-15 минут после запуска).
    Если потоки перезапускались, то набор то увеличивался, то уменьшался, но в пределах, которые сами не менялись. Например, SiteVisitor запущенный в 30 поток колебался от 113 до 118 мб.

    Баг критический, поэтому выпустил новую версию 20.9.2.


  • administrators

    @venom777 said in Проблема с потреблением оперативной памяти:

    @support Если вы не будете пересматривать весь форум, то хочу обратить внимание на еще одну мою тему где похоже найден баг с node js.

    Я постараюсь посмотреть на все темы, но предпочтение буду отдавать тем, которые хорошо оформлены, имеют проект и детальное описание.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.