У меня был очень похожий опыт, но я остановился на другом решении.
Я тоже тестировал скрипт на 8 ядерном 32 гб дедике с широким каналом и там еле еле 10 потоков шло.
Работающими решением оказалось взять 32 ядерный локальный сервер с 64 оперативки, на не очень быстром канале, с сокс5, на нем 100+ потоков запускалось.
Скрипт тот же, никаких оптимизаций не делалось.
Стоит конечно побольше, чем аренда дедика но тут уж зависит от окупаемости твоей темы, стоит ли оно того или нет.
Но соксы могут быть узким местом, по возможности нужно делать свои соксы. Для этого, можно брать дешевые VPS и установить сокс через опенсурсный софт microsocks для линукса (в инете полно инструкций по установке, занимает не более 5 минут вручную, и можно установку через БАС автоматизировать также на случай если нужны сотни соксов).
Рестарт по расписанию
-
возможно тема заезженная, но все же: как грамотно/корректно, принудительно рестартить потоки?
Сейчас делаю так: раз в N времени шедуллером дергаю батник
@ECHO OFF taskkill /IM FastExecuteScript.exe /f /T timeOut /t 5 /nobreak start FastExecuteScript.exe --silentвроде все ок, но иконки в трее остаются после taskkill и накапливаются :)
-
@Sevenup В самой логике скрипта создать условие, для перезапуска. При выполнении которого запускается батник:
@ECHO OFF sleep 60 start FastExecuteScript.exe --silentа следом экшен прервать скрипт с галкой "Завершить скрипт мгновенно".
-
Хотя завершённый скрипт всё равно будет висеть в процессах.. хмм..
-
@Fox said in Рестарт по расписанию:
Хотя завершённый скрипт всё равно будет висеть в процессах.. хмм..
да, в том то и дело, я уже и так и так эксперементировал. Отдельно убить процесс по ПИДу можно было бы, но в БАСе нет возможности пид воркера получить. Потому приходится вот так жестоко килять все и запускать заново :(
-
я в общем не нашел иного решения как: написал програмулину, которая висит в процессах на каждом из инстансов с БАСом, по pub/sub получает мессаджи мол что ей нужно сделать, например прилетел мессадж "restart" тогда она киляет FastExecuteScript.exe и все его дочерные процессы, т.е воркеры, а потом снова запускает в режиме silent. При запуске проект лезет на сервер и получает например уже новое к-во потоков с которым ему нужно запуститься. Таким жестоким образом можно даже удаленно менять к-во потоков на каждом инстансе :)
а может ли кто простыми словами объяснить разницу между запуском FastExecuteScript.exe и RemoteExecuteScript.exe? Собственно в 2м случае происходит а проверка на обновление движка и при необходимости повторная компиляция проекта?