Как уменьшить количество потоков, используемых сервером nodejs? - PullRequest
0 голосов
/ 07 февраля 2020

Я использую довольно простой сервер на машине с ограниченными ресурсами. Узкое место, на которое я нахожусь, состоит в том, что моя учетная запись ограничена 40 процессами / потоками, работающими одновременно. Когда я запускаю свое приложение nodejs и проверяю htop, я вижу, что мой сервер узлов запускает 1 основной поток и 10 дочерних потоков. 5 дополнительных процессов выполняются с помощью forever для выполнения скрипта узла (я хотел использовать pm2, но он использовал слишком много процессов).

Дело в том, что я хочу иметь возможность иметь 2 экземпляра одновременно мой сервер работает одновременно (основная производственная ветвь и ветка разработки, которая будет использоваться для дальнейшей разработки), так что это приводит к 32/40 процессам.

Добавьте тот факт, что я использую tmux с пара windows для мониторинга и управления моим сервером, и я в основном достигаю предела. Если я достигну предела и выйду из системы, я не смогу s sh снова войти в систему и должен связаться со службой поддержки, чтобы убить некоторые из моих процессов. Это не очень хорошо для производственной среды.

Итак, я хотел бы спросить, есть ли способ ограничить количество потоков, используемых моим nodejs сервером? Я подозреваю, что nodejs сам использует только один поток, поэтому я просматривал свои зависимости, но не упомянул о нескольких запущенных потоках.

nodejs version: v12.9.0
dependencies:
        "body-parser": "^1.19.0",
        "commander": "^4.1.1",
        "cors": "^2.8.5",
        "csv-parse": "^4.8.5",
        "csv-writer": "^1.6.0",
        "express": "^4.17.1",
        "jsonwebtoken": "^8.5.1",
        "request": "^2.88.0",
        "winston": "^3.2.1",
        "winston-daily-rotate-file": "^4.4.2"

Наиболее правдоподобным решением сейчас кажется прекратить использовать forever и просто написать свой собственный простой скрипт bash или python с бесконечным временем l oop и простыми условиями. Но я бы предпочел использовать существующее протестированное программное обеспечение, которое имеет некоторые дополнительные возможности мониторинга.

...