2016-05-10 4 views
0

Я развернул приложение express.js на сервере Azure. Я использую pm2 для управления процессами.Node.js pm2 перезапускает почти каждую секунду

Вопрос: pm2 перезапускает почти каждые секунды.

[email protected]:/srv/apps/myapp/current$ pm2 list 
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐ 
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory  │ watching │ 
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤ 
│ app  │ 0 │ fork │ 35428 │ online │ 0  │ 0s  │ 20.465 MB │ disabled │ 
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘ 
Use `pm2 show <id|name>` to get more details about an app 
[email protected]:/srv/apps/myapp/current$ pm2 list 
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐ 
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory  │ watching │ 
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤ 
│ app  │ 0 │ fork │ 35492 │ online │ 7  │ 0s  │ 59.832 MB │ disabled │ 
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘ 
Use `pm2 show <id|name>` to get more details about an app 
[email protected]:/srv/apps/myapp/current$ pm2 list 
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐ 
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory  │ watching │ 
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤ 
│ app  │ 0 │ fork │ 35557 │ online │ 13  │ 0s  │ 21.816 MB │ disabled │ 
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘ 

~/.pm2/pm2.log

2016-05-10 17:39:34: Starting execution sequence in -fork mode- for app name:start id:0 
2016-05-10 17:39:34: App name:start id:0 online 
2016-05-10 17:39:35: App [start] with id [0] and pid [3149], exited with code [255] via signal [SIGINT] 
2016-05-10 17:39:35: Starting execution sequence in -fork mode- for app name:start id:0 
2016-05-10 17:39:35: App name:start id:0 online 
2016-05-10 17:39:35: App [start] with id [0] and pid [3158], exited with code [255] via signal [SIGINT] 
2016-05-10 17:39:35: Starting execution sequence in -fork mode- for app name:start id:0 
2016-05-10 17:39:35: App name:start id:0 online 
2016-05-10 17:39:36: App [start] with id [0] and pid [3175], exited with code [255] via signal [SIGINT] 
2016-05-10 17:39:36: Starting execution sequence in -fork mode- for app name:start id:0 

Я использую кофе сценарий в моем приложении. И запуска приложения с помощью pm2 start app.coffee

package.json

{ 
    "name": "myapp", 
    "version": "0.0.0", 
    "private": true, 
    "scripts": { 
    "start": "gulp start-server" 
    }, 
    "dependencies": { 
    "bcrypt-nodejs": "0.0.3", 
    "body-parser": "~1.13.2", 
    "co": "^4.6.0", 
    "coffee-script": "^1.10.0", 
    "connect-mongo": "^1.1.0", 
    "cookie-parser": "~1.3.5", 
    "debug": "~2.2.0", 
    "express": "~4.13.1", 
    "express-session": "^1.13.0", 
    "gulp": "^3.9.1", 
    "mongoose": "^4.4.14", 
    "morgan": "~1.6.1", 
    "newrelic": "^1.26.2", 
    "passport": "^0.3.2", 
    "passport-local": "^1.0.0", 
    "pm2": "^1.1.3", 
    "pug": "^2.0.0-alpha6", 
    "request": "^2.72.0", 
    "serve-favicon": "~2.3.0" 
    }, 
    "devDependencies": { 
    "shipit-cli": "^1.4.1", 
    "shipit-deploy": "^2.1.3", 
    "shipit-npm": "^0.2.0", 
    "shipit-pm2-nginx": "^0.1.8" 
    } 
} 

Я новичок в Node.js. Может быть, я не вижу очевидного. Пожалуйста, помогите мне.

+0

не знаком с pm2. можете ли вы поделиться каким-либо образцовым проектом, который может быть использован для воспроизведения проблемы? –

+0

начните свой процесс вручную, он должен показать причину проблемы, исправить ее, а затем использовать pm2. –

+0

@XiaominWu Здесь он - https://github.com/resaca/node_debug_app. Я не уверен, что вы можете воспроизвести эту проблему. Потому что я использовал ту же команду на моей машине разработки, и там не было проблем. – Sebin

ответ

5

Журналы не полезны для понимания проблемы.

Чтобы понять неисправность и двигаться вперед, вы должны попытаться запустить свое приложение вручную на пульте дистанционного управления.

типа IE в чем-то вроде npm run start или node path/yo/your/bin.js

Это должно дать вам недостающую часть информации, чтобы решить эту проблему и двигаться дальше.

1

Мы столкнулись с аналогичной проблемой, когда pm2 перезапускал процесс, чтобы запустить web-приложение node.js почти каждую секунду.

Мы обнаружили, что MongoDB не работал, а затем веб-приложение попытается подключиться к базе данных при запуске, но не получится. Это заставит pm2 перезапустить процесс снова и снова, вызывая перезапуск каждую секунду.

Если это ваша проблема, попробуйте запустить MongoDB с помощью mongod или mongod --dbpath [your db path]?

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