Назад | Перейти на главную страницу

Правильное количество процессов uWSGI?

На 4-ядерном ящике какой сценарий обеспечивает лучшую настройку:

4 процесса uWSGI с глубокой очередью для обработки запросов

8 процессов uWSGI с большой очередью

Столько процессов, сколько позволяет память сервера с относительно мелкой очередью?

Исторически сложилось так, что производительность веб-сервера (т.е. рабочая нагрузка с высокой волатильностью и относительно коротким временем жизни транзакции) в большей степени зависит от доступной памяти, чем от количества ядер. Планировщик процессов ОС будет использовать гораздо более глубокую магию, чем просто циклический перебор наиболее ресурсоемких процессов среди имеющихся у него процессоров; вместо того, чтобы пытаться угадать планировщик, лучше убедиться, что у вас достаточно ОЗУ, чтобы поддерживать в рабочем состоянии больше процессов с мелкой очередью, чем ваша ожидаемая нагрузка параллельных запросов, и позволить планировщику решать, как заставить их циклы в своевременно.

Ответ в том, что это зависит от приложения, которое вы обслуживаете, и, в частности, от среды выполнения.

Если вы используете Python или Ruby, вам, вероятно, понадобится один процесс на каждое логическое ядро ​​- если ваше приложение не использует много собственного кода, который может использовать несколько ядер.

Если вы используете Go или другой язык, который может запускать код одновременно на нескольких ядрах, вам понадобится только один процесс.

Что касается того, нужна ли вам глубокая или неглубокая очередь (длина очереди прослушивания сокета), она должна быть как минимум такой же длины, как количество процессов x количество потоков и больше, в зависимости от того, что находится перед uWSGI.