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

spbalexpiter

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

Moonwalker

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

i.stasik

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

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

Igorii

Client
Регистрация
21.02.2015
Сообщения
374
Благодарностей
304
Баллы
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);
    }
}
 
  • Спасибо
Реакции: spbalexpiter

The_vAe

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

i.stasik

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
22 504
Благодарностей
10 050
Баллы
113
  • Спасибо
Реакции: spbalexpiter и i.stasik

Moonwalker

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

i.stasik

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

Sergodjan

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

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