Небольшие баги
-
Выполнение действий через шаблон значительно медленнее, чем через api код (скорее всего паузы стоят где-то, для обработки асинхронного кода). В первом проекте выполняется цикл из 100 запретов запросов через действия в шаблоне, время выполнения ~ 6с, во втором - цикл из 1000 запретов запросов через "Выполнить код", время выполнения ~1-2c (хотя в первом шаблоне количество действий в 10 раз меньше).
Во втором проекте так же появляется баг - скрипт завершает свою работу после выполнения цикла, не выполняя другие асинхронные действия, которые идут после (должен спать 10сек перед логом завершения, но лог идет сразу).
Проект 1:
0_1490511017828_slow.xml
Проект 2:
0_1490511025922_speed.xmlЕще главный процесс, который управляет потоками, постепенно потребляет больше и и больше памяти (доходит до 1гб). Так и должно быть, или все-таки память где-то не очищается правильно (например при получении html элемента)? Хотя вы вроде говорили, что это из-за большого количества созданных ресурсов так происходит.
И последнее - при загрузке страницы мышь всегда устанавливается в координаты 0x0, хотя я перед загрузкой ее перемещаю в рандомную точку.
-
Выполнение действий через шаблон значительно медленнее, чем через api код (скорее всего паузы стоят где-то, для обработки асинхронного кода).
Пауз для обработки асинхронного кода нет, но отладка будет всегда медленнее.
Во втором проекте так же появляется баг - скрипт завершает свою работу после выполнения цикла, не выполняя другие асинхронные действия, которые идут после (должен спать 10сек перед логом завершения, но лог идет сразу)
Во втором проекте есть баг, асинхронные функции не могут быть вызваны внутри обычного for, нужно использовать _do
Еще главный процесс, который управляет потоками, постепенно потребляет больше и и больше памяти (доходит до 1гб).
Нужно смотреть проект, не создаются ли там js объекты, на которые остаются ссылки.
И последнее - при загрузке страницы мышь всегда устанавливается в координаты 0x0, хотя я перед загрузкой ее перемещаю в рандомную точку.
Не могу повторить этого, мышь остается в тех координатах, куда я ее перемещаю. Как вы проверяете где мышь?
-
@support said in Небольшие баги:
Во втором проекте есть баг, асинхронные функции не могут быть вызваны внутри обычного for, нужно использовать _do
Тогда можно сделать, чтобы была возможность выполнять несколько однотипных асинхронных функций параллельно. Хотел сделать что-то типа adblock, распарсив его фильтры и запретив запросы, но теперь не знаю, правильная ли это затея.
@support said in Небольшие баги:
Нужно смотреть проект, не создаются ли там js объекты, на которые остаются ссылки.
Вроде все проверял, даже в стандартных действиях "Присвоить глобальную переменную" везде убрал временную переменную, чтобы она не занимала память.
@support said in Небольшие баги:
Не могу повторить этого, мышь остается в тех координатах, куда я ее перемещаю. Как вы проверяете где мышь?
В браузере смотрю, когда запускаю скрипт. Мышь всегда в углу находится.
-
Тогда можно сделать, чтобы была возможность выполнять несколько однотипных асинхронных функций параллельно. Хотел сделать что-то типа adblock, распарсив его фильтры и запретив запросы, но теперь не знаю, правильная ли это затея.
Я сделаю возможность отправлять список правил.
Вроде все проверял, даже в стандартных действиях "Присвоить глобальную переменную" везде убрал временную переменную, чтобы она не занимала память.
Хорошо, тогда присылайте скрипт со всеми файлами, которые он использует, будут проверять на утечки.
В браузере смотрю, когда запускаю скрипт. Мышь всегда в углу находится.
Когда браузер только создался, мышь всегда в 0,0 но ее можно передвинуть до первых действий по загрузке. Действия открыть браузер и закрыть браузер пересоздают процесс, в котором хранятся настройки, поэтому после их использования нужно устанавливать координаты мыши, прокси и т.д. заново.
-
@support said in Небольшие баги:
Хорошо, тогда присылайте скрипт со всеми файлами, которые он использует, будут проверять на утечки.
Так он в магазине, SiteVisitorPremium
@support said in Небольшие баги:
поэтому после их использования нужно устанавливать координаты мыши, прокси и т.д. заново.
Мышь ставлю прямо перед загрузкой страницы, после установки прокси и всех параметров
-
Так он в магазине, SiteVisitorPremium
Там 1 гиг уходит сразу потому что количество ресурсов очень большое, а пока БАС на большом количестве ресурсов не оптимизирован. Сколько у вас памяти уходит через час/день работы скрипта?
Если уверенны что память течет, пришлите свои настройки и дополнительные файлы, которые нужны для запуска.
Мышь ставлю прямо перед загрузкой страницы, после установки прокси и всех параметров
Понял, это только в режиме запуска, исправлю, сейчас можно подправить загрузив пустую страницу перед движением.
data:text/html,
-
@support 0_1490700648472_SiteVisitorPremium.xml
Через час замерю память, но перед зависанием не успевал посмотреть, всегда по-разному зависало.
Через час память держится на 660мб, плюс-минус. Может, дело не в утечке памяти, но сегодня ближе к вечеру еще раз проверю.
Через 2 часа - 740мб
9 часов - 790мб
20 часов - 800мб. Возможно, утечки памяти нет, но основной процесс грузит процессор на 50% (2 ядра), возможно из-за перегрева выключается. Замечал раньше, что когда два и более потоков работают с глобальной переменной, скрипт зависает на несколько секунд и начинает грузить процессор. Если удастся повторить, скину проект (баг был не в 100% случаях)
-
@blackhacker said in Небольшие баги:
2 часа - 740мб
9 часов - 790мб
20 часов - 800мбНе похоже на утечку, больше похоже на то, что данные для отчета накапливаются, возможно те же переменные для массива не удаляются.
Замечал раньше, что когда два и более потоков работают с глобальной переменной, скрипт зависает на несколько секунд и начинает грузить процессор.
А насколько большие данные туда грузятся? В некоторых случаях можно грузить туда не весь массив, а только те данные, которые изменились, это уменьшит нагрузку на проц.
-
@support said in Небольшие баги:
А насколько большие данные туда грузятся?
Не сильно большие вроде. В том же браузере они быстро парсятся, да и в BAS не всегда зависало, а в 30% случаев, поэтому не могу повторить это со 100% исходом. Запускаю несколько экземпляров одинакового скрипта (5-7), и один-два из них подвисают, остальные - нет.
В скрипте, где такое наблюдал, во всех потоках идет проверка глобальной переменной, если в ней нет данных (пустой объект), то поток парсит данные для дальнейшей работы и добавляет в глобальную переменную. Если данные есть, поток работает уже с ними.Может, я опять ошибся с логикой скрипта, и есть более простой подход? Нужно, чтобы каждый поток был "универсальным", и обрабатывал "общие" данные, которые нужно обработать, и не был привязан к какому-то одному действию. Возьму для примера мой скрипт, который посещает сайты. Там каждый поток не привязан к сайту, а выполняет посещение на том сайте, который нужен в данный момент (чтобы поток работал всегда, а не ожидал следующего действия, т.к. привязан к одному сайту). Но для этого приходится каждый раз читать глобальную переменную, перебирая сайты и выбирать подходящий. Подскажите, если есть более простой вариант.
-
@support Переделал скрипт, чтобы профили брались не из файлов, а из базы. Теперь занимает всего 200мб памяти и не грузит проц, что очень хорошо. Но в глобальную переменную сохранялось не столько уж много данных. Массив из примерно 1-2к элементов. Но занималось 800мб, и была постоянная нагрузка на проц и зависание, при меньших настройках - сейчас при потреблении 200мб скрипт обрабатывает на 2 сайта больше.
-
@blackhacker а было через ресурсы или открытие файла?
-
@venom777 Было сделано через ресурс-строку, в котором указывался путь к файлам, затем в массив заносилась инфа о последнем изменении файла и путь к файлу, файлов было около тысячи. Сам контент файлов не хранился в массиве, массив записывался в глобальную переменную, периодически из нее бралась и обновлялаь инфа каждым потоком