У меня был очень похожий опыт, но я остановился на другом решении.
Я тоже тестировал скрипт на 8 ядерном 32 гб дедике с широким каналом и там еле еле 10 потоков шло.
Работающими решением оказалось взять 32 ядерный локальный сервер с 64 оперативки, на не очень быстром канале, с сокс5, на нем 100+ потоков запускалось.
Скрипт тот же, никаких оптимизаций не делалось.
Стоит конечно побольше, чем аренда дедика но тут уж зависит от окупаемости твоей темы, стоит ли оно того или нет.
Но соксы могут быть узким местом, по возможности нужно делать свои соксы. Для этого, можно брать дешевые VPS и установить сокс через опенсурсный софт microsocks для линукса (в инете полно инструкций по установке, занимает не более 5 минут вручную, и можно установку через БАС автоматизировать также на случай если нужны сотни соксов).
проект не открывается при выполнении скрипта
-
решил я значит сделать логирование всех выполняемых действий, что бы можно было дебажить скрипт, когда он выполняется в запуске
написал такой скриптик:function _sa(id) { var tm = new Date(); var h = tm.getHours(); if (h < 10) h = "0" + h; var m = tm.getMinutes(); if (m < 10) m = "0" + m; var s = tm.getSeconds(); if (s < 10) s = "0" + s; var time_ = h + ":" + m + ":" + s; var threadNum = thread_number(); var logLine = "[" + id + "] [" + time_ + "] Поток №" + threadNum + "\r\n"; var projectDir = directory_of(project_path()); var logsDir = combine_path(projectDir, "logs"); directory_create(logsDir); var logFile = combine_path(logsDir, "log.txt"); file_append(logFile, logLine); }выполняется нормально, все сохраняется, но после того как закрываю проект, он перестает запускаться)
пробовал еще сделать вариант, с сохранением в основной файл лога:function _sa(id) { var tm = new Date(); var h = tm.getHours(); var m = tm.getMinutes(); var s = tm.getSeconds(); if (h < 10) h = "0" + h; if (m < 10) m = "0" + m; if (s < 10) s = "0" + s; var time_ = h + ":" + m + ":" + s; var threadNum = thread_number(); var logLine = "[" + id + "] [" + time_ + "] Поток №" + threadNum + "\r\n"; file_append(Logger.GetFileName(), logLine); ScriptWorker.SetCurrentAction(id); }но помимо того что проект перестал запускаться, он еще и ломал сохранение основного лога в файл
собственно, был бы благодарен, если бы кто-то смог объяснить почему это происходит)
-
@Int64 спасибо за достаточно подробную инфу, но насчет _sa(id)
в таком варианте:_sa = function(id) { log_html("<a href='action://action"+ id + "' style='color:gray;'>[" + id + "]</a>","[" + id + "]") ScriptWorker.SetCurrentAction(id) }он у меня прекрасно работал что в записи, что в запуске, только очень сильно захламляет лог, у меня ошибки выскакивают не так часто, поэтому хотелось бы это спрятать, в идеале, в файл с логами, без вывода в сам лог, ну или хотя бы в отдельный документ
-
@Tekumi в коде вызвать функцию
_is_record(), или использовать это действие:
-
@Oyasumi-Punpun спасибо
