@billiedark said in Запускается только 140 потоков из 500:
Ресурсов ПК хватает, больше 140 не запускаются. Что можно сделать или почему так происходит?
Попробуйте запускать две копии скрипта из разных директорий
Всем привет) С басом работаю давно и достаточно глубоко разбираюсь.
Но вот это понять ни как не могу:
Есть скрипт, назовем его просто "парсер". Алгоритм такой - в настройках указываю папку с txt файлами, скрипт берет в цикле по 1 файлу, читает его в список, создает новый ресурс и читает этот список в новый ресурс (сделано для того, что бы строки из взятого txt можно было использовать в многопотоке).
Далее запускается функция в многопотоке, в которой происходит простое действие - берется строка из нового ресурса, отправляется post-запрос, проверяется была ли ошибка в запросе и так по кругу.
Проблема в том, что в 250 потоков пауза между запросами составляет 3 секунды, а если ставлю 500 потоков, то пауза уже 8-10 секунд. Можно было бы подумать на пропускную способность прокси, но если запускаю 2 копии скрипта по 250 потоков, то пауза как и прежде 3 секунды.
Не понимаю совершенно в чем может быть причина. Дело происходит на сервере с Windows Server 2008.
Возможно у кого-то было подобное, буду рад услышать любое мнение!
@gaget007 Здравствуйте,
В БАС есть инструмент для нахождения мест в скрипте, которые более всего влияют на производительность. Его можно запустить через Меню -> Отчеты -> Измерять время выполнения действий. Действия, которые будут находится вверху списка "тормозят" скрипт больше всего, и это может быть не только хттп запросы, но и, например, парсинг данных, либо не оптимизированная работа со списками. Только после того, как будет предоставлен такой отчет можно говорить об оптимизации.
Если у вас в функции Main находится всего 1 запрос и больше ничего, то больше всего на производительность будет влиять не использование хттп клиента, а именно создание/пересоздание потока. Это можно легко исправить поместив выполнение запроса в цикл, то есть сделать так, чтобы поток пересоздавался через каждый 100/200 запросов, а не через каждый запрос. На больших скриптах такой проблемы не наблюдается, потому что потоки пересоздаются реже.
Запланирован апдейт по хттп клиенту, который не будет создавать отдельных потоков для хттп клиента и таким образом улучшит производительность, но не нужно считать это универсальным решением, потому что проблем описанных в пунктах 1) и 2) это не решит.
@gaget007 said in 500 потоков лагают | 250+250 летают:
Всем привет) С басом работаю давно и достаточно глубоко разбираюсь.
Но вот это понять ни как не могу:Есть скрипт, назовем его просто "парсер". Алгоритм такой - в настройках указываю папку с txt файлами, скрипт берет в цикле по 1 файлу, читает его в список, создает новый ресурс и читает этот список в новый ресурс (сделано для того, что бы строки из взятого txt можно было использовать в многопотоке).
Далее запускается функция в многопотоке, в которой происходит простое действие - берется строка из нового ресурса, отправляется post-запрос, проверяется была ли ошибка в запросе и так по кругу.
Проблема в том, что в 250 потоков пауза между запросами составляет 3 секунды, а если ставлю 500 потоков, то пауза уже 8-10 секунд. Можно было бы подумать на пропускную способность прокси, но если запускаю 2 копии скрипта по 250 потоков, то пауза как и прежде 3 секунды.
Не понимаю совершенно в чем может быть причина. Дело происходит на сервере с Windows Server 2008.
Возможно у кого-то было подобное, буду рад услышать любое мнение!
А какой у вас сервер или ПК? Который тянет столько потоков