Size: a a a

Node.js — русскоговорящее сообщество

2020 February 05

AW

Alex WolF in Node.js — русскоговорящее сообщество
Rustam
А ты сам их на один порт ставишь? Он же по умолчанию сам порт назначает им
Да, сам на один
источник

V

Vint in Node.js — русскоговорящее сообщество
Alex WolF
Ну я же вопрос написал :(
И даже прикрепил цитату из доков, где и сказано, что там RR, вопрос не в этом
"some built-in smarts" - это про некий контроль состояний воркеров, которые отслеживает мастер. А так, никакой особой магии там нет, обычная цикличная обработка (RR).
Кода на 100 строк, можно изучить
https://github.com/nodejs/node/blob/master/lib/internal/cluster/master.js
и
https://github.com/nodejs/node/blob/master/lib/internal/cluster/round_robin_handle.js
источник

AW

Alex WolF in Node.js — русскоговорящее сообщество
Vint
"some built-in smarts" - это про некий контроль состояний воркеров, которые отслеживает мастер. А так, никакой особой магии там нет, обычная цикличная обработка (RR).
Кода на 100 строк, можно изучить
https://github.com/nodejs/node/blob/master/lib/internal/cluster/master.js
и
https://github.com/nodejs/node/blob/master/lib/internal/cluster/round_robin_handle.js
Да, спасибо, не могу найти только это отслеживание состояния воркера. Не ткнёшь носом, если не напряжно?
Я так понимаю, он стукает в воркер и, если тот не отвечает, то помечает его как disconnected?
источник

V

Vint in Node.js — русскоговорящее сообщество
Alex WolF
Да, спасибо, не могу найти только это отслеживание состояния воркера. Не ткнёшь носом, если не напряжно?
Я так понимаю, он стукает в воркер и, если тот не отвечает, то помечает его как disconnected?
Всё вокруг флага exitedAfterDisconnect бегает в master/child.
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Vint
Всё вокруг флага exitedAfterDisconnect бегает в master/child.
Хочешь сказать что после каждого запроса мастер закрывает соединение?
источник

V

Vint in Node.js — русскоговорящее сообщество
Sergey 🛸
Хочешь сказать что после каждого запроса мастер закрывает соединение?
Нет. Это к вопросу о состоянии воркера.
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Vint
Нет. Это к вопросу о состоянии воркера.
Там про другое вопрос, built-in smarts, а не состояние воркера
источник

V

Vint in Node.js — русскоговорящее сообщество
Sergey 🛸
Там про другое вопрос, built-in smarts, а не состояние воркера
Так это и есть про состояние: если воркер в процессе закрытия, но ещё жив (обрабатывает текущее соединение), то выбираем другой воркер. Тем самым не копим большой pending на закрывающихся воркерах
Вот же весь rr:
https://github.com/nodejs/node/blob/master/lib/internal/cluster/round_robin_handle.js#L94
источник

V

Vint in Node.js — русскоговорящее сообщество
Вообще, поясняющих камментов к коду не хватает в некоторых местах. Но и сам cluster - так себе решение, не советую. Лучше снаружи балансировать между отдельными процессами.
источник

AW

Alex WolF in Node.js — русскоговорящее сообщество
Vint
Вообще, поясняющих камментов к коду не хватает в некоторых местах. Но и сам cluster - так себе решение, не советую. Лучше снаружи балансировать между отдельными процессами.
А почему, если не секрет?
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Vint
Так это и есть про состояние: если воркер в процессе закрытия, но ещё жив (обрабатывает текущее соединение), то выбираем другой воркер. Тем самым не копим большой pending на закрывающихся воркерах
Вот же весь rr:
https://github.com/nodejs/node/blob/master/lib/internal/cluster/round_robin_handle.js#L94
В процессе закрытия чего?
источник

V

Vint in Node.js — русскоговорящее сообщество
Неуправляемый алгоритм балансировки, завязка всех соединений master-процесс (в один поток), который тоже может упасть, забрав детей. Пусть нода занимается своими задачами, а для балансировки есть другой софт.
источник

V

Vint in Node.js — русскоговорящее сообщество
Sergey 🛸
В процессе закрытия чего?
Себя (close/shutdown).
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Другой софт не может упасть?
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Vint
Себя (close/shutdown).
Причем тут остановка воркера и баллансировка в обычном режиме?
источник

V

Vint in Node.js — русскоговорящее сообщество
Sergey 🛸
Другой софт не может упасть?
Всё может. Но зачем на ноду вешать лишнее? Если речь о нагрузках.
источник

V

Vint in Node.js — русскоговорящее сообщество
Sergey 🛸
Причем тут остановка воркера и баллансировка в обычном режиме?
В каком "обычном"?
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Когда у тебя все воркеры работают и ничего не падает/закрывается
источник

V

Vint in Node.js — русскоговорящее сообщество
Sergey 🛸
Когда у тебя все воркеры работают и ничего не падает/закрывается
А как же динамически подбросить воркеров при повышении нагрузки? Убить простаивающие. Да, своеобразный кейс, но "костыли" в коде как раз для таких случаев.
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Vint
А как же динамически подбросить воркеров при повышении нагрузки? Убить простаивающие. Да, своеобразный кейс, но "костыли" в коде как раз для таких случаев.
Зачем это в асинхронном приложение?
источник