Постепенный запуск потоков

spbalexpiter

Client
Регистрация
24.11.2013
Сообщения
462
Благодарностей
169
Баллы
43
Когда сразу запускаешь 50 условных потоков браузерного шаблона, то проц нагружается на 100%.
Как можно этого избежать и сделать плавное увеличение потоков?
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 845
Благодарностей
1 469
Баллы
113
1. Запустить руками не 50, а по 5 десять раз через какую-то паузу.
2. Настроить запуск по расписанию. Например, каждую минуту - 5 потоков.
3. Встроить в шаблон на старте рандомную паузу "от-до", которая будет выдерживаться до поднятия инстанса.
4. Встроить в шаблон проверку количества уже запущенных потоков (конкретного шаблона, ряда шаблонов или всего в зенке). Исходя из количества "в работе" решать, что делать дальше, паузу/стопать/работать дальше...
 
Последнее редактирование:
  • Спасибо
Реакции: i.stasik

i.stasik

Client
Регистрация
25.09.2023
Сообщения
274
Благодарностей
40
Баллы
28
3. Встроить в шаблон на старте рандомную паузу "от-до", которая будет выдерживаться до поднятия инстанса.
и во входных параметрах галочку сделать, там же можно прописать "от-до"
запустил все 50 поток, убрал галочку, чтоб не тратилось время при запуске следующих потоков

так же данную паузу рекомендую поставить по завершению потока. в случае обрыва всех 50 потоков (допустим пропал интернет, или расходники закончились или ручного/принудительного прерывания), то все потоки начнут выполнять good или badEnd, это нагрузка на проц и диск, в случае записи результата в файл или базу
 

Igorii

Client
Регистрация
21.02.2015
Сообщения
373
Благодарностей
301
Баллы
63
Как можно этого избежать и сделать плавное увеличение потоков?
С просторов форума:
C#:
int timeOut = 30; // таймаут, сек
lock (SyncObject) {
    try {
        var tickCount = project.GlobalVariables["MyNameSpace", "TickCount"];
        if (tickCount.Value.ToString() == string.Empty) {
            project.GlobalVariables.SetVariable("MyNameSpace", "TickCount", Environment.TickCount);
            return "ok";
        }
        if (tickCount.Value + timeOut * 1000 > Environment.TickCount)
            Thread.Sleep(timeOut * 1000);
        project.GlobalVariables.SetVariable("MyNameSpace", "TickCount", Environment.TickCount);
    }
    catch (KeyNotFoundException ex) {
        project.GlobalVariables.SetVariable("MyNameSpace", "TickCount", Environment.TickCount);
    }
}
 

The_vAe

Client
Регистрация
30.05.2019
Сообщения
3 710
Благодарностей
1 453
Баллы
113
Когда сразу запускаешь 50 условных потоков браузерного шаблона, то проц нагружается на 100%.
Как можно этого избежать и сделать плавное увеличение потоков?
В настройках зеннопостера - раздел Инстансы вроде бы - есть ползунок запуск с паузой
 

i.stasik

Client
Регистрация
25.09.2023
Сообщения
274
Благодарностей
40
Баллы
28
В настройках зеннопостера - раздел Инстансы вроде бы - есть ползунок запуск с паузой
не нашел такого, по возможности сбрось скрин как оно у тебя отображается
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
21 632
Благодарностей
9 635
Баллы
113
  • Спасибо
Реакции: i.stasik

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 845
Благодарностей
1 469
Баллы
113
Тут еще важно понимать, сколько в целом шаблон работает. Условно, если после запуска весь цикл занимает 2-3-5 минут, с большой долей вероятности 50 потоков могут никогда не подняться в принципе )) Если делать паузы по 10 секунд между запусками, то на 50 потоков это будет уже 500 секунд. Что в два-три раза дольше, чем поток работает. Т.е., к моменту запуска новых потоков многие старые уже давно закончат работать ))) Значит, до "потолка" в 50 потоков есть шанс вообще не добраться.
Но тут уже скорее про логику работы и объемы в принципе, а не про паузу ))
 

i.stasik

Client
Регистрация
25.09.2023
Сообщения
274
Благодарностей
40
Баллы
28

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
21 632
Благодарностей
9 635
Баллы
113
спасибо! никогда бы не подумал, что под словом "баз" подразумеваются потоки ))
;-) Потоки находятся внутри процессов, которые иногда называем базами - базовые процессы.
 
  • Спасибо
Реакции: i.stasik

Кто просматривает тему: (Всего: 1, Пользователи: 1, Гости: 0)