Живая связь двух скриптов **BAS**
-
Поставил сейчас пропуск кадров 2000, дак ни одна страница не загрузилась
:D
.Поток завершился с сообщением "Таймаут во время выполнения LoadPage https://*
Видимо команду, что страница полностью загружена выдаёт браузер через js, а BAS не успевает её получить до таймаута в 120 000мс.
-
@Fox said in Живая связь двух скриптов **BAS**:
@Zenodrot у меня скрипт на 4000 строчек, пока самый масштабный мой проект. Больше всего нагружают проц потоки, к сожалению я их не смог перевести на get-запросы. Точнее часть функций реализована на запросах, но для получения данных, а не для отправки. Для отправки они используют шифрование..
Сутки не выждал теста. Спустя час система сервера зависает, пинги не идут, хоть и находится в одной локальной сети, TeamViewer говорит, что сервер оффлайн.
Запустил не в 45, а в 22 потока, полёт нормальный, всё отрабатывает как надо, всё идеально.. даже обидно блин.. Скрипт в 20 потоков приносит больше выгоды, чем в 40 потоков..И регулярки там есть, но не так уж и часто. Да я и сомневаюсь, что проседает производительность из за регулярок.
я недавно решил регуляркой выжить инфу из строк в 300 000 шт
у меня виртуалка колом встала
-
@Zenodrot Ну я с максимальным текстовым объёмом работал на 2-3 мегабайта. Всё нормально работало. Думаю дело не в регулярке, а в логике программирования. Скинь тестовый проект, гляну. Если действительно использование регулярных выражений сильно сказывается на призводительности, буду перекраивать свой проект.
-
@Fox said in Живая связь двух скриптов **BAS**:
@Zenodrot Ну я с максимальным текстовым объёмом работал на 2-3 мегабайта. Всё нормально работало. Думаю дело не в регулярке, а в логике программирования. Скинь тестовый проект, гляну. Если действительно использование регулярных выражений сильно сказывается на призводительности, буду перекраивать свой проект.
ок, я к вечеру скину, там обычно все, берем в список 300 000 строк из них нужно взять мыло и пасс остальные строки без пасса пару экшенов, и на том моменте где происходит отработка регулярки, оператива и проц забивает на 100 %
-
Поставил сейчас таймаут по больше. Пропуск кадров 2000, пока вроде всё нормально работает :) Интересный момент:
@support said in Пропуск Кадров:Установка пропуска кадров означает, что вся отрисовка, выполнение js и вообще все действия связанные с работой браузера будут производиться раз в пропуск кадров / 30 секунд.
У меня пропуск кадров стоит 2000 / 30 секунд, выходит один кадр в 66 секунд, но у меня отрисовка выходит где то раз в 30 секунд..
-
@Fox said in Живая связь двух скриптов **BAS**:
@Zenodrot Ну я с максимальным текстовым объёмом работал на 2-3 мегабайта. Всё нормально работало. Думаю дело не в регулярке, а в логике программирования. Скинь тестовый проект, гляну. Если действительно использование регулярных выражений сильно сказывается на призводительности, буду перекраивать свой проект.
лови. в архиве список его на диск c:/, после выполнения на с:/ создается список с результами
*На зенке точно такой же проект с этой же точно регуляркой (идентичная регулярка) отрабатывает на ура. 1 секунда и готово
в басе полное зависания системы оператива под 100 и проц
если строк мало то нормально а 300 000+ строк сразу дохнет
0_1497535261340_mails.rarв зенке точно такая же логика читаем список в переменку в переменке парсим
думал регулярка изощренная слишком, нужно меньше комбинаций для вычесления выражения, тк список не маленький, но ХЗ в зинке то все норма ресурсов хватает успешно...
-
@Zenodrot Вот твой скрипт . Отрабатывает за 1 секунду.
Я всего то убрал ресурсы вообще, прочитал из файла и применил твою регулярку.
Судя по твоему скриншоту из зенки, ты там как раз так и делал. Читал файл и применял регулярку.
-
@Fox said in Живая связь двух скриптов **BAS**:
@Zenodrot Вот твой скрипт . Отрабатывает за 1 секунду.
Я всего то убрал ресурсы вообще, прочитал из файла и применил твою регулярку.
ща тестну без ресурсов
-
@Fox said in Живая связь двух скриптов **BAS**:
@Zenodrot Вот твой скрипт . Отрабатывает за 1 секунду.
Судя по твоему скриншоту из зенки, ты там как раз так и делал. Читал файл и применял регулярку.Дак вот же скрипт, твой, только без ресурсов.
-
тоже самое полное зависание вимртуалки
очень важный момент
у меня на вирте 4 гиг два ядра по 3.5
у тебя выполнялось ибо ты с хостовой машины выполнял где ресурсов в разы больше
попробуй список увеличить
-
-
@Fox said in Живая связь двух скриптов **BAS**:
@Zenodrot А вот твой же test.xml, даже с ресурсами. Только без экшена ресурс в список.
стопе, я переписывал читать фаил в список, у тебя просто читаеться
то так да все нормально выполнилось
-
@Zenodrot Поспешил :) срабатывает быстро, если применять регулярку сразу к ресурсу, только вот не работает.
Зато если взять из файла и сразу к нему применить регулярку, то всё прекрасно срабатывает.
-
@Fox said in Живая связь двух скриптов **BAS**:
@Zenodrot Поспешил :) срабатывает быстро, если применять регулярку сразу к ресурсу, только вот не работает.
Зато если взять из файла и сразу к нему применить регулярку, то всё прекрасно срабатывает.да,да с ресурсом не катит, если не читать файл в список, а читать просто файл тогда отрабатывает нормально
так не нагружает
вывод, что при чтении файла в список и потом в этой переменки парсить список это не правельно, но если прочитать файл не как список и спарсить то все норма
пля без пузырька не разберешься )если админ уведет это сообщение, может даст комментарий по этому поводу почему так отжирает ресурсы в первом случае. Ведь это подводный камень может быть для новичков.
p.S
Лис, МБ в твоем шабе есть подобные камешки, не думал об этом?
-
@Zenodrot Нет :) Подобных камней у меня точно нет. У меня всего три ресурса. И экшена ресурс в список я не использую. Да и с большими объёмами информации скрипт не сталкивается.
-
@Fox нашел как нагрузку на проц уменьшить? 8х2.5 85-90% хавает в 80 потоков
-
@artihorror said in Живая связь двух скриптов **BAS**:
@Fox нашел как нагрузку на проц уменьшить? 8х2.5 85-90% хавает в 80 потоков
8х2.5 Это в смысле восьмиядерный проц с частотой 2.5 гигагерца?
Нагрузку на проц очень хорошо снижает пропуск кадров, @support хотел как то сделать надстройку, чтобы регулировать для каждого потока пропуск кадров. Но пока её нет, я реализовал через два скрипта. Один парсит нужную информацию с пропуском кадров 1 и записывает в базу. А второй скрипт с огромным пропуском кадров 2000 (рендерит один кадр в 30 секунд) применяет полученную информацию из базы. Вообщем пока идёт тест на моей машине, завтра-послезавтра закину на сервер, тогда смогу сказать, есть польза от этого или нет :).
Думаю ещё освобождать промежуточные переменные, например получив отпечаток в переменную FINGERPRINT я его применяю, но больше, эту переменную ни как не использую. А в оперативке она висит у каждого потока.
Или после get-запроса содержание ответа получаю в переменную SAVED_CONTENT из которой получаю нужную информацию через регулярку, либо xpath. Но сама переменная тоже висит в оперативке.Возможно конечно я не прав, и BAS как то выгружает не используемые переменные из оперативки на винт например..
-
@Fox мне тоже интересно, для оптимизации можно ли чистить\удалять переменные? есть ли в этом смысл?
-
@sitiros said in Живая связь двух скриптов **BAS**:
@Fox мне тоже интересно, для оптимизации можно ли чистить\удалять переменные? есть ли в этом смысл?
если большие объемы инфы в переменке фигурируют то лучше высвобождать их, сам прикинь зачем ненужный объем памяти в ходе проекта таскать с собой, в одну накинул в другую накинул вот и оперативка кончилась, один поток забил раму например в 100 мб там второй поток еще 100 мб и т.д каждый себе кусок отъел, а если высбободил у первого потока второму эта часть достанется и т.д я как понимаю потоки в BASе работают асинхронно вне очереди. Я сильно особо не шарю в многопоточности, хз.
копипаст с зиновского мана
Нужно учесть один нюанс: расход процессора можно немного превысить, т.е. если у вас он загружен на 100% увеличение потоков на 10-15% практически ничего не изменит, а главное, не ухудшит. Просто потоки будут ждать некоторое время освобождения этих ресурсов.
Оперативная память, наоборот, не должна забиваться полностью, всегда лучше оставлять 10-30%. Если она кончится, это может привести к падению.ну это доводы, нужно точно узнавать у супарта, МБ BAS за нас все оптимизирует.
-
Уфф, 4 утра, а я так и не разобрался. Хотел поставить все точки над И, но не вышло. Вот АРХИВ.
В нём файл mails.txt, который надо в корень диска C:\ положить.
И три тестовых проекта, каждый из которых запускает 200 потоков, читает файл mails.txt в переменную.Первый проект сперва читает файл в переменную, потом обнуляет, присваивая переменной значение 0.
Второй сперва читает файл в переменную, потом удаляет командой delete VAR_FILE_CONTENT;
А третий читает
>>
обнуляет>>
читает>>
удаляет.Я раз 10 запускал скрипты и мониторил загруженность оперативки. Дак каждый раз результат был разный.. То помогает обнуление освобождая память, то наоборот немного увеличивало занимаемый объём. С удалением точно так же. То освобождалась память, то нет..
Может я не корректно провожу тест?