У меня был очень похожий опыт, но я остановился на другом решении.
Я тоже тестировал скрипт на 8 ядерном 32 гб дедике с широким каналом и там еле еле 10 потоков шло.
Работающими решением оказалось взять 32 ядерный локальный сервер с 64 оперативки, на не очень быстром канале, с сокс5, на нем 100+ потоков запускалось.
Скрипт тот же, никаких оптимизаций не делалось.
Стоит конечно побольше, чем аренда дедика но тут уж зависит от окупаемости твоей темы, стоит ли оно того или нет.
Но соксы могут быть узким местом, по возможности нужно делать свои соксы. Для этого, можно брать дешевые VPS и установить сокс через опенсурсный софт microsocks для линукса (в инете полно инструкций по установке, занимает не более 5 минут вручную, и можно установку через БАС автоматизировать также на случай если нужны сотни соксов).
Полный фриз скрипта
-
Всем привет! Столкнулся со странной проблемой, буду рад любым комментариям по теме
Дано:
- скрипт работает в 80 потоков (браузеры + http-клиенты), в некоторые пиковые моменты все потоки единомоментно активизируются
- сервер 24 ядра 3.4 ГГц, 24 ГБ ОЗУ, 50 Гб SSD; нагрузка по ЦП 35%, по ОЗУ 75%, диск почти пустой
- он так работает уже давно, нагрузка конечно в пиковые моменты возрастает, иногда даже где-то бывают подвисания на 1-2 сек, но не более того
Что произошло: теперь, в некоторые такие пиковые моменты нагрузки (но не во все, случайным образом) весь скрипт зависает на 2-3 минуты и отвисает через 2-3 минуты как ни в чем не бывало. То есть весь сервер работает, но в BAS вообще ничего не происходит, ни одного лога. И через 2-3 минуты единомоментно все начинает работать снова. Даже POST-запросы, отправленные 2-3 минуты назад, тупо доходят через эти 2-3 минуты.
Я никогда не сталкивался с такой проблемой, но кажется это похоже на зависание основного процесса BAS? С чем это может быть связано? Куда копать?

-
Здравствуйте, проект работает в скомпилированном виде или нет?
Какая версия BAS используется?
Перед тем как начались зависания, какие действия были? Обновление BAS? Возможно какие-то изменения в проекте?
Попробуйте уменьшить количество потоков и понаблюдать за результатом, если дело не в ресурсах сервера, есть вероятность, что сетевая нагрузка слишком большая. -
@m4zuper
Версия 26.7.1 (не обновляю давно)
Скомпилирован
Никаких действий
Дело не в потоках, т.к. до этого месяцами работало на 140-160 потоках на этом же сервереГрешу на какие-то утечки памяти, т.к. до этого насколько помню всегда было 40% ОЗУ использовано, а сейчас 75%. Ребутнул сервер, стало 40% ОЗУ опять, посмотрим в динамике. Может ли нехватка ОЗУ вызывать зависания такого рода? Потому что раньше, когда ОЗУ было мало, просто потоки отказывались стартовать, но скрипт продолжал работать.
-
@doupiu said in Полный фриз скрипта:
Может ли нехватка ОЗУ вызывать зависания такого рода?
Не могу ничего утверждать, но думаю, что возможно
@doupiu said in Полный фриз скрипта:
Грешу на какие-то утечки памяти
Сомнительно, откуда взяться утечке, если версия не обновлялось и ничего в проекте не менялось?
Возможно, ресурсы, с которыми вы работаете, стали более требовательными к браузеру.
Возможно овнер сервера как-то "оптимизирует" работу серверов, не знаю даже что ещё могло повлиять -
@m4zuper Удалось увидеть вживую момент зависания. Выглядит это так, что все приложение BAS становится в статус "Не отвечает" в Windows, соответственно никаких логов внутри не появляется, полоска "Скрипт работает" не двигается. При этом и ЦП, и ОЗУ, и сеть, и диск - без нагрузки. Все остальное, кроме BAS, работает нормально. И через 3 минуты все отвисло и продолжило работать.
Куда можно покопать?
-
@doupiu said in Полный фриз скрипта:
Куда можно покопать?
Очень большие\бесконечные циклы без задержки или частые обращения к базе данных
-
@Fox said in Полный фриз скрипта:
Очень большие\бесконечные циклы без задержки или частые обращения к базе данных
Да, у меня бывали из-за этого проблемы (много циклов и работы с БД), и этот момент уже оптимизирован и не менялся с тех пор. И даже когда были проблемы, это вызывало подвисания на 2-3 секунды, но не на 2-3 минуты.
P.S. Общение с ChatGPT говорит о том, что что-то внутри BAS (кол-во DNS/TLS-коннектов/процессов/диск) блокирует основной поток BAS. И отвисает по таймауту, поэтому каждый раз это происходит ровно через 2-3 минуты. Есть что-то подобное в движке BAS, что можно изменить?