2015-10-10 38 views
1

Мой экспресс-сервер выглядит следующим образом:Развертывание экспресс-сервера на Heroku

//server.js 
var app = express(); 
var server = app.listen(3000, ... 


    // this is further wrapped in main.js 
var forever = require('forever-monitor'); 

var child = new (forever.Monitor)('server/server.js', { 
    max: 30000, 
    silent: false, 
    args: [] 
}); 

    child.start(); 

Когда я раскрываю в Heroku я в настоящее время выполнить main.js

//package.json 
"scripts": { 
    "start": "node server/main.js" 
    }, 

до сих пор так хорошо ... heroku начинается навсегда, что далее начинается с моего экспресс-сервера.

Однако я не считаю, что получаю полное преимущество запуска экспресс-сервера на всех res ..

В идеале я хотел бы сделать что-то pm2, чтобы запустить мой экспресс-сервер. Как я могу достичь этого?

ответ

2

При развертывании кода в Heroku вы НЕ хотите использовать монитор процесса, такой как pm2 или навсегда - это связано с тем, что динамическая сетка Heroku автоматически обнаруживает сбои приложений и обрабатывает ваши процессы. Это более надежный способ обработки вещей, так как вы также получите полезную информацию об отладке Heroku в журналах.

ПРИМЕЧАНИЕ: Я также заметил в вашем примере, что вы слушаете подключения на порту 3000 - вы, вероятно, не хотите делать это на Heroku, поскольку они назначают вам порт для прослушивания в случайном порядке. Вместо этого вы должны сказать app.listen(process.env.PORT);.

+0

pm2 также гарантирует, что приложение-узел использует все доступные ядра .. как справляется с этим динамическая сетка Heroku? – runtimeZero

+0

Обычно вы не хотите использовать все ядра на динамометре Heroku - ресурсы процессора обычно довольно ограничены - даже с помощью одного процесса Node вы, вероятно, сможете использовать множество циклов процессора. Если вы действительно хотите это сделать, вы можете, но, пожалуйста, будьте осторожны с использованием вашего процессора. Я заметил, что это сходит с ума. Сама сетка Dyno предназначена для масштабирования по горизонтали. Поэтому, если вы выбрали один Dyno, просто добавьте еще один. – rdegges

+0

не могли бы вы расшириться на «Сама сетка Dyno означает масштабирование по горизонтали». Что это значит ? – runtimeZero

Смежные вопросы