Как выполняется балансировка в модели prefork?
У меня есть сервер под Python 2.7 (на основе торнадо).
Этот сервер работает по модели prefork. Это означает, что родительский процесс связывается с портом, а затем разветвляется с фиксированным номером дочернего процесса. Затем каждый ребенок будет слушать и создавать пул потоков, который будет принимать входящий запрос.
У меня вопрос, как в этой ситуации справляется "балансировка нагрузки"? Как ядро выбирает, какой экземпляр будет выполнять принятие? Есть ли у меня контроль над этим?
Я пытаюсь понять поведение, которое я наблюдаю на некоторых серверах, и количество порожденных детей. Те же 2 или 3 процесса принимают весь запрос. Обратите внимание, что при высокой нагрузке он снова перебалансируется. Но это поведение не будет проявляться в каждой архитектуре, у некоторого класса серверов будет полностью сбалансированный список дочерних элементов, в то время как другая архитектура будет вовсе не однородной.