У меня был очень похожий опыт, но я остановился на другом решении.
Я тоже тестировал скрипт на 8 ядерном 32 гб дедике с широким каналом и там еле еле 10 потоков шло.
Работающими решением оказалось взять 32 ядерный локальный сервер с 64 оперативки, на не очень быстром канале, с сокс5, на нем 100+ потоков запускалось.
Скрипт тот же, никаких оптимизаций не делалось.
Стоит конечно побольше, чем аренда дедика но тут уж зависит от окупаемости твоей темы, стоит ли оно того или нет.
Но соксы могут быть узким местом, по возможности нужно делать свои соксы. Для этого, можно брать дешевые VPS и установить сокс через опенсурсный софт microsocks для линукса (в инете полно инструкций по установке, занимает не более 5 минут вручную, и можно установку через БАС автоматизировать также на случай если нужны сотни соксов).
Неудачное завершение скрипта
-
Всем добрый день.
Написал скрипт, который выполняет действия с юзерами, а после этого добавляет их в блеклист, но если скрипт завершается неудачно и перезапускается, блеклист очищается. Подскажите пожалуйста, возможно ли после неудачного выполнения скрипта поставить запуск с определённого момента? Или как то по другому реализовать такое? -
@encoder95 said in Неудачное завершение скрипта:
Всем добрый день.
Написал скрипт, который выполняет действия с юзерами, а после этого добавляет их в блеклист, но если скрипт завершается неудачно и перезапускается, блеклист очищается. Подскажите пожалуйста, возможно ли после неудачного выполнения скрипта поставить запуск с определённого момента? Или как то по другому реализовать такое?Продумывайте логику заранее, на проблемных участках используйте игнорирование ошибок. Блеклист можно держать в глобальной переменной, чтобы не зависеть от перезапуска потока.
-
@encoder95 Просто блеклист должен быть не в оперативной памяти,а в БД или текстовой документе в крайнем случае.
-
Подскажите, кто знает есть ли блок или как можно настроить какой нибудь коллбек который будет вызываться всегда после завершения скрипта?
Скажем, в логике где то происходит ошибка, например вылетает throw внутри блока выполнения nodejs и скрипт завершается сразу на этом же месте. А хотелось бы после этого получить управление в какой то блок, где можно будет завершить все недоработанные моменты корторые еще можно завершить. Например разблокировать ресурс внешний с которым работал тот или инной поток или почистить временные файлы и т.д.