PM2 против Gunicorn: Эквивалентная настройка Gunicorn для режима fork_mode в PM2
У нас есть staging-сервер для запуска текущего состояния нашего веб-приложения под нашей веткой git develop
. На нем запущен компонент Next.js для фронтенда и Django для веб-API (с использованием DRF).
Как staging-сервер, мы не полностью настроили его как производственный сервер, где мы обычно используем Gunicorn
. Вместо этого мы запускаем и Next, и приложение Django, используя PM2
в cluster_mode
и fork_mode
соответственно.
На нашем рабочем сервере мы запускаем Django на Gunicorn
, используя параллелизм с самой базовой настройкой - просто установить workers
без необходимости использовать worker_connection
и threads
, как gevent
или gthread
, соответственно.
Мне интересно, в PM2, каково эквивалентное поведение его fork_mode
в Gunicorn
? (Например, работает ли fork_mode
так же, как gevent
или gthread
? Работает ли он в параллельном режиме вместо параллельного?)
Я хочу знать, реализует ли PM2 fork_mode
потоковую обработку или параллелизм. Если да, то это может быть причиной того, что Django API запрос через наш staging сервер под управлением PM2 fork_mode
вызывает значительные задержки, или иногда вызывает задержки при первом запросе после некоторого бездействия
При текущем состоянии кодовой базы нашего приложения Django лучше всего работает parallelism
, что легко достижимо в Gunicorn, используя только опцию -w
. Не уверен, как установить такое же поведение в PM2.