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

spbalexpiter

Client
Регистрация
24.11.2013
Сообщения
475
Реакции
192
Баллы
43
Когда сразу запускаешь 50 условных потоков браузерного шаблона, то проц нагружается на 100%.
Как можно этого избежать и сделать плавное увеличение потоков?
 
1. Запустить руками не 50, а по 5 десять раз через какую-то паузу.
2. Настроить запуск по расписанию. Например, каждую минуту - 5 потоков.
3. Встроить в шаблон на старте рандомную паузу "от-до", которая будет выдерживаться до поднятия инстанса.
4. Встроить в шаблон проверку количества уже запущенных потоков (конкретного шаблона, ряда шаблонов или всего в зенке). Исходя из количества "в работе" решать, что делать дальше, паузу/стопать/работать дальше...
 
Последнее редактирование:
  • Спасибо
Реакции: spbalexpiter и i.stasik
3. Встроить в шаблон на старте рандомную паузу "от-до", которая будет выдерживаться до поднятия инстанса.
и во входных параметрах галочку сделать, там же можно прописать "от-до"
запустил все 50 поток, убрал галочку, чтоб не тратилось время при запуске следующих потоков

так же данную паузу рекомендую поставить по завершению потока. в случае обрыва всех 50 потоков (допустим пропал интернет, или расходники закончились или ручного/принудительного прерывания), то все потоки начнут выполнять good или badEnd, это нагрузка на проц и диск, в случае записи результата в файл или базу
 
  • Спасибо
Реакции: spbalexpiter
Как можно этого избежать и сделать плавное увеличение потоков?
С просторов форума:
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
Когда сразу запускаешь 50 условных потоков браузерного шаблона, то проц нагружается на 100%.
Как можно этого избежать и сделать плавное увеличение потоков?
В настройках зеннопостера - раздел Инстансы вроде бы - есть ползунок запуск с паузой
 
  • Спасибо
Реакции: spbalexpiter
В настройках зеннопостера - раздел Инстансы вроде бы - есть ползунок запуск с паузой
не нашел такого, по возможности сбрось скрин как оно у тебя отображается
 
  • Спасибо
Реакции: spbalexpiter
  • Спасибо
Реакции: spbalexpiter и i.stasik
Тут еще важно понимать, сколько в целом шаблон работает. Условно, если после запуска весь цикл занимает 2-3-5 минут, с большой долей вероятности 50 потоков могут никогда не подняться в принципе )) Если делать паузы по 10 секунд между запусками, то на 50 потоков это будет уже 500 секунд. Что в два-три раза дольше, чем поток работает. Т.е., к моменту запуска новых потоков многие старые уже давно закончат работать ))) Значит, до "потолка" в 50 потоков есть шанс вообще не добраться.
Но тут уже скорее про логику работы и объемы в принципе, а не про паузу ))
 
  • Спасибо
Реакции: spbalexpiter
спасибо! никогда бы не подумал, что под словом "баз" подразумеваются потоки ))
;-) Потоки находятся внутри процессов, которые иногда называем базами - базовые процессы.
 
  • Спасибо
Реакции: i.stasik

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