@FastSpace Вот как раз и пытаюсь уточнить мне неизвестные способы оптимизации)
Многопоток (100+)
-
@Fox БД нормально отнесётся к этому?
У неё есть какой-то понятно-допустимый предел прочности?
Количества обращений в секунду?И вопрос в догонку - как тогда автоматизировать запуск 50 копий скрипта в разных папках? Засунуть все 50 в Таскер запуска? Или запустить через BAS "Выполнить любое приложение"? Если второе - то как ему в командной строке передать параметры запуска? (Которые в таскере на одном из шагов проставляются).
-
На производительность в многопотоке очень сильно влиет параметр из настроек проекта
Пропуск кадров
у меня на 3900x 128 гиг оперативы c пропуском 0 кадров максиум идет 40-50 потоков, потом комп начинает тормазить
а если ставлю пропуск 60 то и 120 потоков тянет, где то только на половину нагружая проц, думаю 200 точно должен вытянуть
Так что советую Вам играться с параметром Пропуск кадров, так как это может в разы увеличить максимальное кол-во используемых Вами потоков.В качестве бд использую mysql 8 c увеличиной настройкой максимальных соединений
Connection Settings
max_connections = 8192
так как у меня там пулы соеденений по 32 штуки на поток
без этой настройки короче часто бд просто падала -
У меня связь с бд у каждого бота потока своя,
так как изменения о том что бот поток запущен, нужно вносить в базу что снова этот бот не был выбран другим потоком,
при любой причине остановке потока нужно вносить изменения связанные с тем что поток остановлен, это это через супер глобальный массив потоков.
кроме того нужно вносить изменения сколько за каждую сессию бот заработал.
Короче там достаточно много взаимодействий каждого потока с базой, и как это все вынести в отдельный поток просто не предтавляю, так как изменения должны вноситься полюбому и своевременно, иначе если будут запушены 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-диск, то он и работать будет только с него? -
@AngelOfAncient профили. но не забыть бекапить(RAM при отключении железа очистится)
-
Ошибки конечно из за включения пропуска кадров, возможны
например с поиском элементов в iframe
Так что нужно это все хорошо тестировать.
Задержки в скорости работы со включенным пропуском кадров, я не заметил но может они и есть, я тесты на это не делал.
На работу моего скрипта это ни какого существенного влияния не оказывает.
А вот выигрыш с 40 - 50 потоков до 200 на моей системе для меня имеет принципиальное значение. -
@tet-vivi said in Многопоток (100+):
запуск функции - запрос в бд,
завершение функции - запрос в бд.
и все запуски и запросы через основной поток, который запускает и ждет пока функция/поток не исполнит задачуА как тогда смотреть что там в каждом браузере происходит
Я сейчас через запуск скрипта иногда смотрю что там в каждом браузере происходит
А если там запустить 50 браузеров ассинхроно то как тогда смотреть что в них происходит? -
@gomeapat said in Многопоток (100+):
А как тогда смотреть что там в каждом браузере происходит
Я сейчас через запуск скрипта иногда смотрю что там в каждом браузере происходит
А если там запустить 50 браузеров ассинхроно то как тогда смотреть что в них происходит?там так же можно будет посмотреть как и в обычном режиме