New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
每次修改文件重启报这么一堆错误 #432
Comments
可以更详细的描述一下? 代码是否写错了?这里报了一个 ECONNRESET 的错误,是不是在请求其他服务? |
这是因为你在开发环境写出了未捕获异常,导致进程退出。 |
App Worker#4:300960 disconnect, suicide: true, state: disconnected, current workers: ["5"] |
@zlab 你最后这一段是正常的,开发期重启 worker。 但上面的 |
报错我这边也是会出现的。但是我没去管他。。 |
系统:window 10 应该与webstorm无关,在命令行下通过sublime之类的修改依然会触发。 |
等 @shaoshuai0102 从巴厘岛回来后再看看 ^_^ |
不好意思 休假几天。 有使用什么插件么?我这里没有成功复现。 |
只有 windows 下有? |
@shaoshuai0102 在linux上,我还没投入使用。现在只有在windows上遇到,没有其他插件,用的egg-init生成的项目,没有做改动。 |
win 下没成功复现 谁那里有 windows 机器也帮忙试着复现下吧 |
是否会与 cluster-client 有关系? |
Leader 这个应该就是 cluster-client 的吧 |
主要是 watcher 用了 cluster-client |
我跟 找找windows机器去 |
我找了台 win 实体机稳定重现。 development 插件在文件改动时,先 fork 一个新 worker 进程然后 kill 原来的进程,kill 的方式是发送 sigterm 信号。按这个方式来看,应该必定会出现 leader read 报错的。我现在的疑问反而是为啥 mac 下没有。。。 现在想的思路是在 worker 里捕获 process.on('SIGTERM', handler) 在 handler 里主动 close。有没有其他想法 @gxcsoccer |
|
虽然说windows不支持,但确实没有做额外处理的情况下,进程还是会被成功杀的。。 |
这句话没看懂,不支持,然后又 |
https://github.com/eggjs/egg-cluster/blob/master/lib/app_worker.js#L65 app worker 做了处理 捕获 sigterm 后主动退出了。这样就解决了刚才的疑问,为什么 win 不支持还可以退出,因为是主动退出的。 那么我在这里试着主动 close follwer 连接试试 |
赞,我来翻译下 @shaoshuai0102 |
Nodejs中的优雅退出标签(空格分隔): 翻译 如 UNIX信号 所说
信号有很多种,本文会集中讨论两个信号:
不管你在什么环境部署你的 nodejs 应用,你都需要让你的应用响应这两个信号: Upstart: 当停止一个服务时,默认情况会发送 SIGTERM 信号,等待5秒后如果进程还在运行,会发送 SIGKILL 信号. 下面我们尝试一个简单的nodejs应用
你可以看到响应会延迟4秒。 nodejs文档是这么说的:
这里我也不清楚默认行为是什么, 我在处理请求的过程中发送一个 SIGTERM 信号,则这个请求会挂掉,如下图所示:
幸运的是,http 模块带有一个 close 方法 ,可以在处理完所有请求后停止响应新的连接,并触发回调函数。这个方法来自 NET 模块, 因此对于所有类型的tcp连接你都可以很方便的使用这个方法。 现在我修改一下例子
之后键入下面的命令:
你会注意到,进程在处理完最后一个请求后才推出。更有意思的是,收到 SIGTERM 信号之后,进程不会在继续处理请求了:
某些博客和stackoverflow上的例子中,当server.close比预期花费更长时间时,会使用一个timeout来响应 SIGTERM 信号。上面提到的这些表明这个做法是没有必要的,每个进程管理器都会在SIGTERM 信号响应太长时间后发送SIGKILL信号。 |
我在win7环境下,vscode编辑器,没有用egg-init 自己手动搭建的环境。 |
还在解,优先级不是很高,不会影响实际线上环境运行。再等等哈 |
另外我也看不懂
是什么个意思……手头有 windows 机器的同学监听 |
@shaoshuai0102 分享下? |
所以更新计划是? |
有点忙 这几天搞定 |
这个问题还没解决吗?同样的错误 |
关注中 |
@shaoshuai0102 我的问题也是如此 windows 7环境, egg版本是1.1.0,启动了1个worker,app目录下没有任何资源或前端文件,但依旧有这个问题,关注中... 2017-04-17 11:20:15,951 INFO 64116 [master] Agent Worker started (1596ms) 2017-04-17 11:20:53,155 ERROR 57900 nodejs.ECONNRESETError: read ECONNRESET |
|
同错:
code: 'ECONNRESET' |
2017-04-24 11:12:24,764 ERROR 5488 nodejs.ECONNRESETError: read ECONNRESET
code: 'ECONNRESET' |
我也遇到了:
code: 'ECONNRESET' |
我也遇到了:
code: 'ECONNRESET' |
|
已经在看了,请大家再耐心等待。 |
26 days ago@shaoshuai0102说这几天搞定。。。 |
抱歉这些天忙其他事情,上周刚有时间捡起来但没搞定,我们其他同学会投入进来一起看一下。 |
已经在 node-modules/cluster-client#25 修复,等待合并发布,然后大家重新安装 node_modules 即可。 |
@shaoshuai0102 可以改一下 windows send message 来退出了。 |
好的 |
报错内容!希望尽快解决!谢谢! |
删除 node_modules,重新 install 了么?应该只有一个 warning 了。 |
我也遇到这个问题了,在Mac下,运行NODE Websocket,只有一个同事用android端访问才会出现这个问题,我使用手机的浏览器websocket访问没问题 最后重启电脑,问题消失 好像没什么帮助,我只好(逃 |
同样的问题,本地开发模式下,在macbook pro机器上稳定重现,无限提示reload worker。
实际上我的app.js并没有了修改什么。 |
每次修改文件重启报这么一堆错误
The text was updated successfully, but these errors were encountered: