Есть главный процесс в котором открыт RPC-сервер.
Этот же процесс использует модуль cluster чтобы создать 500+ форков, они же воркеры, которые будут выполнять работу.
Можно ли в каждом воркере открывать соединение к mysql или лучше в мастере держать соединение и с воркеров пинать мастер чтобы тот обновлял базу?
P.S. Возможно ли форку передать открытое соединение с мастера?
500+ воркеров? на одной машине? зачем столько? производительность только проиграет от такого количества
по сабжу, открывайте соединение в каждом воркере, mysql не умеет разруливать конкурентный доступ к одному соединению. В пределах одного процесса это разруливают либы-драйверы, ставя запросы в очередь, но на нескольких процессах с этим будут проблемы
Каждый воркер - это объект https://github.com/request/request со своими куками. (Грубо говоря, это один авторизованный аккаунт на сайте X)
Меня смущает 500 открытых соединений.
Не лучше ли в мастере сделать pool?
miki131: конечно же лучше пул соединений в одном процессе, если производительности не будет хватать, тогда можно сделать кластер процессов по количеству ядер процессора
У вас 500+ процессоров на машине? Нет смысла делать количество воркеров большечем количество доступных ядер.
Уменьши количество воркеров и в каждом воркере открывай пул соединений.