Если операции вычисления блокирующие и блокирует они поток надолго, то стоит вынести их в
воркеры, само количество воркеров лучше выбрать по количеству логических ядер (хардварных потоков), а распределять задачи можно простым round robin алгоритмом, если сами задачи примерно одинаковые.
А насчет сокетов, 300 постоянных коннектов на 1 процесс/поток для ноды сущий пустяк, она спокойно переварит несколько десятков тысяч, если поток не блокировать дольше нескольких десятков операций