Значение worker_processes для Nginx/Openresty, работающего в Kubernetes

На основе документации здесь https://nginx.org/en/docs/ngx_core_module.html#worker_processes .

Worker_processes определяется как количество рабочих процессов.

Оптимальное значение зависит от многих факторов, включая (но не ограничиваясь ими) количество ядер ЦП, количество жестких дисков, на которых хранятся данные, и характер нагрузки. Если есть сомнения, хорошим началом будет установка количества доступных ядер ЦП (значение «auto» попытается определить его автоматически).

Большинство руководств рекомендуют установить для этого значения количество ядер на сервере или установить значение auto, которое само устанавливает его в соответствии с количеством ядер на компьютере.

Я запускаю OpenResty в Kubernetes, поэтому, когда я проверяю количество ядер ЦП внутри модуля openresty, он возвращает мне количество ядер, которые имеет моя физическая машина (узел). Однако из-за запросов и ограничений ЦП на k8 все 8 ядер не будут доступны для модуля.

Так каким же должно быть значение worker_processes для общих процессоров в случае kubernetes?

Спасибо!

1 ответ

Хороший вопрос, на который я до сих пор ищу ответ. Однако на данный момент я думаю так: Nginx + Kubernetes, где Nginx не является входным контроллером, должны иметь рабочие процессы = 1. Почему? Каждый рабочий процесс — это новый процесс внутри контейнера, и общее правило состоит в том, что процесс должен быть только один. Таким образом, Nginx будет иметь n + 1 процесс в одном контейнере, если вы используете «auto», где n — количество ядер. Даже установка рабочих процессов = 1 — это всего 2 процесса в контейнере.

Если предположить, что Nginx действительно хорошо поддерживает свои дополнительные процессы, то вы, вероятно, можете выбрать «авто» и воспользоваться преимуществами Nginx в одном модуле. В качестве альтернативы вы можете использовать рабочие процессы = 1, а затем масштабировать модуль снаружи, чтобы добиться аналогичного масштаба.

В конечном итоге потребуется некоторое тестирование производительности различных сценариев, чтобы подтвердить, как это работает для вашего приложения.

Другие вопросы по тегам