Многопоток (100+)



  • Есть ли допустимый адекватный предел того, что может переварить BAS, если не писать скрипт на запросах? 100-200-300 одновременно работающих браузеров? Или лучше открыть 3 версии BAS'а по 100 потоков в каждом? Или 6 версий по 50 шт.?

    Теоретически виртуальная машина на хосте бесконечна - хоть 512 Гб перативы ставь, хоть 64 ядра CPU. Но сможет ли это переварить BAS?

    Пытаюсь под VMVare запустить на арендованном сервере с 32 CPU и 64 ОЗУ - BAS вешается потока после 30-40ого.





  • Хмм... Да, там снимается вопрос о том, что запуски лучше дробить.
    Но остаётся много вопросов.

    Например, я скомпилил скрипт - мне 10 раз запустить его из одной папки релиза.
    Или скопировать 10 разных папок (Каждая скачает себе свой Fast-Script движок) и запустить по одной копии оттуда?



  • @AngelOfAncient said in Многопоток (100+):

    Хмм... Да, там снимается вопрос о том, что запуски лучше дробить.
    Но остаётся много вопросов.

    Например, я скомпилил скрипт - мне 10 раз запустить его из одной папки релиза.
    Или скопировать 10 разных папок (Каждая скачает себе свой Fast-Script движок) и запустить по одной копии оттуда?

    Скомпилить можно и один раз, но запускать лучше разные копии скрипта из разных каталогов



  • @Fox БД нормально отнесётся к этому?
    У неё есть какой-то понятно-допустимый предел прочности?
    Количества обращений в секунду?

    И вопрос в догонку - как тогда автоматизировать запуск 50 копий скрипта в разных папках? Засунуть все 50 в Таскер запуска? Или запустить через BAS "Выполнить любое приложение"? Если второе - то как ему в командной строке передать параметры запуска? (Которые в таскере на одном из шагов проставляются).



  • На производительность в многопотоке очень сильно влиет параметр из настроек проекта
    Пропуск кадров
    у меня на 3900x 128 гиг оперативы c пропуском 0 кадров максиум идет 40-50 потоков, потом комп начинает тормазить
    а если ставлю пропуск 60 то и 120 потоков тянет, где то только на половину нагружая проц, думаю 200 точно должен вытянуть
    Так что советую Вам играться с параметром Пропуск кадров, так как это может в разы увеличить максимальное кол-во используемых Вами потоков.

    В качестве бд использую mysql 8 c увеличиной настройкой максимальных соединений

    Connection Settings

    max_connections = 8192
    так как у меня там пулы соеденений по 32 штуки на поток
    без этой настройки короче часто бд просто падала



  • @gomeapat не было идеи использовать для работы с бд отдельный поток например?



  • У меня связь с бд у каждого бота потока своя,
    так как изменения о том что бот поток запущен, нужно вносить в базу что снова этот бот не был выбран другим потоком,
    при любой причине остановке потока нужно вносить изменения связанные с тем что поток остановлен, это это через супер глобальный массив потоков.
    кроме того нужно вносить изменения сколько за каждую сессию бот заработал.
    Короче там достаточно много взаимодействий каждого потока с базой, и как это все вынести в отдельный поток просто не предтавляю, так как изменения должны вноситься полюбому и своевременно, иначе если будут запушены 2 аккаунта разными потоками с разными ip, то все хана блокировка этих акков.
    С бд mysql работаю уже лет 10, так что мне она наиболее знакома, и для моих целей полностью подходит, на счет других бд не знаю с ними не работал.



  • @gomeapat по описанию можно сделать потоки через асинхронные функции.
    запуск функции - запрос в бд,
    завершение функции - запрос в бд.

    и все запуски и запросы через основной поток, который запускает и ждет пока функция/поток не исполнит задачу



  • @gomeapat said in Многопоток (100+):

    На производительность в многопотоке очень сильно влиет параметр из настроек проекта
    Пропуск кадров
    у меня на 3900x 128 гиг оперативы c пропуском 0 кадров максиум идет 40-50 потоков, потом комп начинает тормазить
    а если ставлю пропуск 60 то и 120 потоков тянет, где то только на половину нагружая проц, думаю 200 точно должен вытянуть
    Так что советую Вам играться с параметром Пропуск кадров, так как это может в разы увеличить максимальное кол-во используемых Вами потоков.

    В качестве бд использую mysql 8 c увеличиной настройкой максимальных соединений

    Connection Settings

    max_connections = 8192
    так как у меня там пулы соеденений по 32 штуки на поток
    без этой настройки короче часто бд просто падала

    А не влияет ли как-то пропуск кадров на то, как нас видит сайт?



  • @Evheniu said in Многопоток (100+):

    А не влияет ли как-то пропуск кадров на то, как нас видит сайт?

    Чисто в теории может заметить наверное делая замеры производительности. И из-за пропуска кадров могут происходить ошибки в работе сайтов, плюс сам скрипт работает гораздо медленней. Я его не использую.



  • @UserTrue said in Многопоток (100+):

    @Evheniu said in Многопоток (100+):

    А не влияет ли как-то пропуск кадров на то, как нас видит сайт?

    Чисто в теории может заметить наверное делая замеры производительности. И из-за пропуска кадров могут происходить ошибки в работе сайтов, плюс сам скрипт работает гораздо медленней. Я его не использую.

    Спасибо, я тоже стараюсь не использовать эту функцию



  • @UserTrue said in Многопоток (100+):

    @Evheniu said in Многопоток (100+):

    А не влияет ли как-то пропуск кадров на то, как нас видит сайт?

    Чисто в теории может заметить наверное делая замеры производительности.

    Так есть же эмуляция производительности.



  • @FastSpace said in Многопоток (100+):

    Так есть же эмуляция производительности.

    Ну ну ) Хотя я не использую совсем не из-за этого, а как уже писал выше из-за того что падает скорость выполнения потока и возможны ошибки. Сомнительная выгода



  • @FastSpace said in Многопоток (100+):

    @UserTrue said in Многопоток (100+):

    @Evheniu said in Многопоток (100+):

    А не влияет ли как-то пропуск кадров на то, как нас видит сайт?

    Чисто в теории может заметить наверное делая замеры производительности.

    Так есть же эмуляция производительности.

    А ты используешь пропуск кадров?

    Если да, сколько пропуск ставишь?

    А ты заменяешь действие спать,на выполнить код и там что-то типа sleep?



  • Спасибо всем, попробую поиграться и с пропуском тоже.
    Потому как уже не знаю, что что грешить.

    У виртуалки 128 Гб оперативы, 32 ядра проца (16 по 2 сокета), диск поставил на максимальное FastSSD.
    Остаются только настройки самого BAS.



  • @AngelOfAncient said in Многопоток (100+):

    Спасибо всем, попробую поиграться и с пропуском тоже.
    Потому как уже не знаю, что что грешить.

    У виртуалки 128 Гб оперативы, 32 ядра проца (16 по 2 сокета), диск поставил на максимальное FastSSD.
    Остаются только настройки самого BAS.

    На сколько потоков тебе хватает такой конфигурации?



  • @Evheniu На ~200 (Если по процу и памяти, 200 загруженных Твичей с запретом на видео и картинки). Но тормоза не из-за системных ресурсов. Грешу на SSD (Создание или обращение к 200 профилей примерно одновременно) - типа I\O Error, может не успевает писать на диск.



  • @AngelOfAncient said in Многопоток (100+):

    типа I\O Error, может не успевает писать на диск.

    можно подумать о https://ru.wikipedia.org/wiki/RAM-диск



  • @tet-vivi Я беру диск в облаке! В ЦОДе.
    Там должно быть всё нормально с этим)
    И так самый быстрый SSD у них взял.
    Но под виртуалкой ещё RAM-диск запустить.
    Хм... Ну можно пробнуть.
    Только что там хранить?
    Если BAS установлена на системном, она и обращаться будет к нему же.
    Или если весь релиз приложеньки вылить на RAM-диск, то он и работать будет только с него?


Log in to reply