Причина, по которой вы видите несколько процессов, заключается в том, что runfcgi
использует method=prefork
по умолчанию. С помощью этого метода группа процессов FCGI разветвляется для обработки запросов; очевидно, method=threaded
использует вместо этого многопоточный процесс FCGI.
У каждого есть свои преимущества и недостатки. Метод prefork будет использовать больше памяти, поскольку процесс использует больше памяти, чем поток. Запуск также займет немного больше времени, поскольку разветвление занимает больше времени, чем создание нового потока. Однако, как правило, дескрипторы предварительной обработки загружаются лучше, чем потоки, поэтому, если ваше приложение имеет высокую нагрузку, оно может работать лучше с предварительной обработкой (если этого не произойдет, вы, вероятно, не заметите большой разницы в любом случае).
Почему вторая команда порождает 6 процессов? Как вы ограничиваете количество порожденных процессов?
Django будет порождать количество процессов по умолчанию при предварительном форкинге, если вы не укажете, сколько порождать. Вы можете изменить это с помощью опций maxspare
или maxchildren
.