egg-script 执行发布失败 AppWorkerDiedError 错误

Created on 26 Feb 2018  ·  35Comments  ·  Source: eggjs/egg

内容如下:
ERROR 4721 nodejs.AppWorkerDiedError: [master] app_worker#1:4723 died (code: 0, signal: null, suicide: false, state: dead), current workers: ["2","3","4","5","6","7","8"]

Most helpful comment

我遇到了同样的问题, 原因是 router 的指向写错了

路由配置:

router.get("/quoter/release-demand.html", controller.viewCtrl.quoterReleaseDemand);

而控制器的名字是 controller/viewCtr.js

😅多了个 l, 后面的兄弟们注意检查下代码哈

All 35 comments

请提供更多日志

@atian25

[email protected] start /Users/dinglei/Documents/work/Git/fe-uak-project
eggctl start --port=8080 --daemon --framework=@uak/dl-test-node --env=prod --title=egg-server-fe-uak-project --ignore-stderr

[egg-scripts] Starting @uak/dl-test-node application at /Users/dinglei/Documents/work/Git/fe-uak-project
[egg-scripts] Run node /Users/dinglei/Documents/work/Git/fe-uak-project/node_modules/egg-scripts/lib/start-cluster {"port":8080,"framework":"/Users/dinglei/Documents/work/Git/fe-uak-project/node_modules/@uak/dl-test-node","title":"egg-server-fe-uak-project","baseDir":"/Users/dinglei/Documents/work/Git/fe-uak-project"} --title=egg-server-fe-uak-project
[egg-scripts] Save log file to /var/root/logs
[egg-scripts] Wait Start: 1...
[egg-scripts] Wait Start: 2...
[egg-scripts] Got error when startup:
[egg-scripts] 2018-02-26 18:36:28,251 ERROR 5509 nodejs.AppWorkerDiedError: [master] app_worker#1:5511 died (code: 0, signal: null, suicide: false, state: dead), current workers: ["2","3","4","5","6","7","8"]
[egg-scripts] at Master.onAppExit (/Users/dinglei/Documents/work/Git/fe-uak-project/node_modules/egg-cluster/lib/master.js:384:21)
[egg-scripts] at emitOne (events.js:116:13)
[egg-scripts] at Master.emit (events.js:211:7)
[egg-scripts] at Messenger.sendToMaster (/Users/dinglei/Documents/work/Git/fe-uak-project/node_modules/egg-cluster/lib/utils/messenger.js:122:17)
[egg-scripts] at Messenger.send (/Users/dinglei/Documents/work/Git/fe-uak-project/node_modules/egg-cluster/lib/utils/messenger.js:87:12)
[egg-scripts] at EventEmitter.cluster.on (/Users/dinglei/Documents/work/Git/fe-uak-project/node_modules/egg-cluster/lib/master.js:263:22)
[egg-scripts] at emitThree (events.js:141:20)
[egg-scripts] at EventEmitter.emit (events.js:217:7)
[egg-scripts] at ChildProcess.worker.process.once (internal/cluster/master.js:185:13)
[egg-scripts] at Object.onceWrapper (events.js:317:30)
[egg-scripts] name: 'AppWorkerDiedError'
[egg-scripts] pid: 5509
[egg-scripts] hostname: dingleideMacBook-Pro-2.local
[egg-scripts]
[egg-scripts] 2018-02-26 18:36:28,252 ERROR 5509 [master] app_worker#1:5511 start fail, exiting with code:1
[egg-scripts] 2018-02-26 18:36:28,252 ERROR 5509 [master] exit with code:1
[egg-scripts] 2018-02-26 18:36:28,257 ERROR 5510 [agent_worker] receive disconnect event on child_process fork mode, exiting with code:110
[egg-scripts] 2018-02-26 18:36:28,257 ERROR 5510 [agent_worker] exit with code:110
[egg-scripts]
[egg-scripts] Start got error, see /var/root/logs/master-stderr.log
[egg-scripts] Or use --ignore-stderr to ignore stderr at startup.

[egg-scripts] Save log file to /var/root/logs

下面的 common-error

0 info it worked if it ends with ok
1 verbose cli [ '/Users/dinglei/.nvm/versions/node/v8.9.3/bin/node',
1 verbose cli '/Users/dinglei/.nvm/versions/node/v8.9.3/bin/npm',
1 verbose cli 'start' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle [email protected]~prestart: [email protected]
6 info lifecycle [email protected]~start: [email protected]
7 verbose lifecycle [email protected]~start: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]~start: PATH: /Users/dinglei/.nvm/versions/node/v8.9.3/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/dinglei/Documents/work/Git/fe-uak-project/node_modules/.bin:/Users/dinglei/.nvm/versions/node/v8.9.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/opt/ImageMagick/bin
9 verbose lifecycle [email protected]~start: CWD: /Users/dinglei/Documents/work/Git/fe-uak-project
10 silly lifecycle [email protected]~start: Args: [ '-c',
10 silly lifecycle 'eggctl start --port=8080 --daemon --framework=@uak/dl-test-node --env=prod --title=egg-server-fe-uak-project' ]
11 silly lifecycle [email protected]~start: Returned: code: 1 signal: null
12 info lifecycle [email protected]~start: Failed to exec start script
13 verbose stack Error: [email protected] start: eggctl start --port=8080 --daemon --framework=@uak/dl-test-node --env=prod --title=egg-server-fe-uak-project
13 verbose stack Exit status 1
13 verbose stack at EventEmitter. (/Users/dinglei/.nvm/versions/node/v8.9.3/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:285:16)
13 verbose stack at emitTwo (events.js:126:13)
13 verbose stack at EventEmitter.emit (events.js:214:7)
13 verbose stack at ChildProcess. (/Users/dinglei/.nvm/versions/node/v8.9.3/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at emitTwo (events.js:126:13)
13 verbose stack at ChildProcess.emit (events.js:214:7)
13 verbose stack at maybeClose (internal/child_process.js:925:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid [email protected]
15 verbose cwd /Users/dinglei/Documents/work/Git/fe-uak-project
16 verbose Darwin 17.3.0
17 verbose argv "/Users/dinglei/.nvm/versions/node/v8.9.3/bin/node" "/Users/dinglei/.nvm/versions/node/v8.9.3/bin/npm" "start"
18 verbose node v8.9.3
19 verbose npm v5.6.0
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] start: eggctl start --port=8080 --daemon --framework=@uak/dl-test-node --env=prod --title=egg-server-fe-uak-project
22 error Exit status 1
23 error Failed at the [email protected] start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

common-error.log 没有错

应该是 master-stderr?

@atian25
解决了 我们线上环境 是prod 我没有写 conf.production.js,所有报错了,然后我加了 daemon 屏蔽了报错,所以没找到

这是我的命令内容:
eggctl start --port=8080 --daemon --framework=@uak/dl-test-node --env=prod --title=egg-server-fe-uak-project --ignore-stderr

感觉prod没生效

@popomore 我暂时关了吧,我自己查查 为什么prod没生效

是 config.prod.js

没有 config.prod.js 也不会报错的。
你的启动命令中 --framework=--env=prod 是没必要的

我也遇到了同样的问题,但是没有解决,npm start就会报AppWorkerDiedError,请问怎么解决呢?

see master-stderr.log

@atian25 请帮忙看看
2018-04-25 10:31:51,370 ERROR 8687 [app_worker] server got error: bind EADDRINUSE null:7001, code: EADDRINUSE
2018-04-25 10:31:51,371 ERROR 8687 [app_worker] exit with code:1
2018-04-25 10:31:51,382 ERROR 8669 nodejs.AppWorkerDiedError: [master] app_worker#1:8687 died (code: 1, signal: null, suicide: false, state: dead), current workers: []
at Master.onAppExit (/www/wwwroot/www.shenggouw.com/shenggou-server/node_modules/egg-cluster/lib/master.js:387:21)
at emitOne (events.js:115:13)
at Master.emit (events.js:210:7)
at Messenger.sendToMaster (/www/wwwroot/www.shenggouw.com/shenggou-server/node_modules/egg-cluster/lib/utils/messenger.js:122:17)
at Messenger.send (/www/wwwroot/www.shenggouw.com/shenggou-server/node_modules/egg-cluster/lib/utils/messenger.js:87:12)
at EventEmitter.cluster.on (/www/wwwroot/www.shenggouw.com/shenggou-server/node_modules/egg-cluster/lib/master.js:264:22)
at emitThree (events.js:140:20)
at EventEmitter.emit (events.js:216:7)
at ChildProcess.worker.process.once (internal/cluster/master.js:179:13)
at Object.onceWrapper (events.js:318:30)
name: 'AppWorkerDiedError'
pid: 8669
hostname: iZwz90atywrldxkja73ew1Z

2018-04-25 10:31:51,385 ERROR 8669 [master] app_worker#1:8687 start fail, exiting with code:1
2018-04-25 10:31:51,385 ERROR 8669 [master] exit with code:1
2018-04-25 10:31:51,389 ERROR 8677 [agent_worker] receive disconnect event on child_process fork mode, exiting with code:110
2018-04-25 10:31:51,399 ERROR 8677 [agent_worker] exit with code:110

让我来帮你找下关键词:

[app_worker] server got error: bind EADDRINUSE null:7001, code: EADDRINUSE
[app_worker] server got error: bind EADDRINUSE null:7001, code: EADDRINUSE
[app_worker] server got error: bind EADDRINUSE null:7001, code: EADDRINUSE

@atian25 谢谢,刚刚找到了

Nginx按着官网教程配置的:
location /socket.io {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
# proxy_bind $remote_addr transparent;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://some_server:7002;
error_log /var/log/nginx/log/abc.log;
break;
}

前端的ws://请求会报502错误,看了node后端发现错误如下:

[2018-06-01 03:25:33.786] [cfork:master:26] worker:87 disconnect (exitedAfterDisconnect: false, state: disconnected, isDead: false, worker.disableRefork: false)
[2018-06-01 03:25:33.789] [cfork:master:26] new worker:97 fork (state: none)
[2018-06-01 03:25:33.790] [cfork:master:26] worker:87 exit (code: null, exitedAfterDisconnect: false, state: dead, isDead: true, isExpected: true, worker.disableRefork: false)
2018-06-01 03:25:33,790 ERROR 26 nodejs.AppWorkerDiedError: [master] app_worker#5:87 died (code: null, signal: SIGSEGV, suicide: false, state: dead), current workers: ["1","6"]
at Master.onAppExit (/app/node_modules/egg-cluster/lib/master.js:384:21)
at emitOne (events.js:116:13)
at Master.emit (events.js:211:7)
at Messenger.sendToMaster (/app/node_modules/egg-cluster/lib/utils/messenger.js:122:17)
at Messenger.send (/app/node_modules/egg-cluster/lib/utils/messenger.js:87:12)
at EventEmitter.cluster.on (/app/node_modules/egg-cluster/lib/master.js:263:22)
at emitThree (events.js:141:20)
at EventEmitter.emit (events.js:217:7)
at ChildProcess.worker.process.once (internal/cluster/master.js:185:13)
at Object.onceWrapper (events.js:317:30)
name: 'AppWorkerDiedError'
pid: 26
hostname: 5781ad28bf5c

@atian25 请大神帮忙看看

location 没用 / 的原因是 react的编译的静态文件在nginx做了如下配置了:

location / {
expires 30d;
try_files $uri @fallback;
}

location @fallback {
rewrite .* /index.html break;

    }

跟 nginx 应该没啥关系,你这是一个服务端错误导致 worker 挂掉,看 error 日志

@atian25 common-error.log 是空的,但是每次socket请求 第一次是成功的, 后面3次都失败了,每次work挂掉就又重启了

image

at Process.ChildProcess._handle.onexit (internal/child_process.js:237:12)

name: "AppWorkerDiedError"
pid: 83004
hostname: FrankdeMacBook-Pro.local

2019-03-15 11:02:09,358 ERROR 83004 [master] app_worker#1:83011 start fail, exiting with code:1
2019-03-15 11:02:09,366 ERROR 83004 [master] exit with code:1
2019-03-15 11:02:09,388 ERROR 83006 [agent_worker] receive disconnect event on child_process fork mode, exiting with code:110
⚠️ Error: /Users/sunfeng/Project/NodeProject/project/mwbyd/queue-book/node_modules/egg-bin/lib/start-cluster {"typescript":true,"env":"test","port":3017,"baseDir":"/Users/sunfeng/Project/NodeProject/project/mwbyd/queue-book","workers":1,"framework":"/Users/sunfeng/Project/NodeProject/project/mwbyd/queue-book/node_modules/egg"} exit with code 1
⚠️ Command Error, enable DEBUG=common-bin for detail
2019-03-15 11:02:09,395 ERROR 83006 [agent_worker] exit with code:110

0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'run', 'dev' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'predev', 'dev', 'postdev' ]
5 info lifecycle [email protected]~predev: [email protected]
6 info lifecycle [email protected]~dev: [email protected]
7 verbose lifecycle [email protected]~dev: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]~dev: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/sunfeng/Project/NodeProject/project/mwbyd/queue-book/node_modules/.bin:/usr/local/etc/apache-maven-3.5.3/bin:/bin:/usr/local/Cellar/zookeeper/bin:/usr/bin/python2.7/bin:/Users/sunfeng/anaconda2/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin
9 verbose lifecycle [email protected]~dev: CWD: /Users/sunfeng/Project/NodeProject/project/mwbyd/queue-book
10 silly lifecycle [email protected]~dev: Args: [ '-c',
10 silly lifecycle 'egg-bin dev --env=test -r egg-ts-helper/register --port 3017' ]
11 silly lifecycle [email protected]~dev: Returned: code: 1 signal: null
12 info lifecycle [email protected]~dev: Failed to exec dev script
13 verbose stack Error: [email protected] dev: egg-bin dev --env=test -r egg-ts-helper/register --port 3017
13 verbose stack Exit status 1
13 verbose stack at EventEmitter. (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:304:16)
13 verbose stack at EventEmitter.emit (events.js:182:13)
13 verbose stack at ChildProcess. (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:182:13)
13 verbose stack at maybeClose (internal/child_process.js:961:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:5)
14 verbose pkgid [email protected]
15 verbose cwd /Users/sunfeng/Project/NodeProject/project/mwbyd/queue-book
16 verbose Darwin 17.7.0
17 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "dev"
18 verbose node v10.5.0
19 verbose npm v6.4.0
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] dev: egg-bin dev --env=test -r egg-ts-helper/register --port 3017
22 error Exit status 1
23 error Failed at the [email protected] dev script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

common-error是空的,不知道为什么

看下文档,egg-scripts start 的日志是在 home 下的,不是项目目录下

launch.json:

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Egg Debug",
"type": "node",
"request": "launch",
"runtimeExecutable": "npm",
"runtimeArgs": [ "run", "debug"],
"console": "integratedTerminal",
"protocol": "auto",
"restart": true,
"port": 7001
}
]
}

package.json:

"scripts": {
"start": "egg-scripts start --daemon --title=egg-server-example",
"stop": "egg-scripts stop --title=egg-server-example",
"dev": "egg-bin dev",
"debug": "egg-bin debug",
"test": "npm run lint -- --fix && npm run test-local",
"test-local": "egg-bin test",
"cov": "egg-bin cov",
"lint": "eslint .",
"ci": "npm run lint && npm run cov",
"autod": "autod"
}

问题:VSC中,打了断点,不进断点,直接输出结果。

利用:打开attach,并且运行npm run debug

F5之后提示:
Cannot connect to runtime process, timeout after 10000 ms - (reason: Cannot connect to the target: connect ECONNREFUSED 127.0.0.1:7001).
并且也是直接输出结果,不停留在断点

VSC是最新版本

@atian25 atian25

你这个问题跟这个 issue 没啥关系,有问题重新提一个,带上最小可复现方式

@henjing 怎么解决的啊我也遇到了
error: bind EADDRINUSE null:7001, code: EADDRINUSE

EADDRINUSE 不是写的非常清楚了么? Google 下不就知道它的含义了?

Error Address In Use

我也遇到了同样的问题,但是没有解决,npm start就会报AppWorkerDiedError,请问怎么解决

这个最终是怎么解决的?

AppWorkerDiedError 就是 Worker 因为某些原因挂了,具体什么原因,要看你们具体的详细的报错日志,而不是找到一个 issue 就往上空回复

我把node_modules整个文件夹删掉了重新npm install 后就没问题了

我把node_modules整个文件夹删掉了重新npm install 后就没问题了

万能的 rm -rf node_modules 。。。。😂

我把node_modules整个文件夹删掉了重新npm install 后就没问题了

it works...thank you

我遇到了同样的问题, 原因是 router 的指向写错了

路由配置:

router.get("/quoter/release-demand.html", controller.viewCtrl.quoterReleaseDemand);

而控制器的名字是 controller/viewCtr.js

😅多了个 l, 后面的兄弟们注意检查下代码哈

我也遇到这个问题 然而,taskkill -PID 【your pid 】-F
正常运行了

Was this page helpful?
0 / 5 - 0 ratings

Related issues

whlsxl picture whlsxl  ·  3Comments

Webjiacheng picture Webjiacheng  ·  3Comments

kylezhang picture kylezhang  ·  3Comments

bupafengyu picture bupafengyu  ·  3Comments

dizhifeng picture dizhifeng  ·  3Comments