eggjs / egg

🥚 Born to build better enterprise frameworks and apps with Node.js & Koa
https://eggjs.org
MIT License
18.86k stars 1.81k forks source link

[ClusterClient:Watcher] follower closed, and try to init it again #3818

Open wangweiwei opened 5 years ago

wangweiwei commented 5 years ago

What happens?

新初始化的项目,没有添加任何代码,也没有没有任何操作,等待一会儿就会出现

复现步骤,错误日志以及相关配置

步骤

1、任意一个文件夹 2、cnpm init egg 3、选择:ts - Simple egg && typescript app boilerplat …… n-1、yarn n、yarn dev

日志

2019-07-14 14:08:15,437 ERROR 3167 nodejs.ClusterClientNoResponseError: client no response in 107404ms exceeding maxIdleTime 60000ms, maybe the connection is close on other side.
    at Timeout.Leader._heartbeatTimer.setInterval [as _onTimeout] (/Users/xxx/Codes/f2e-full-stack/company/qtt/task-schedule/node_modules/cluster-client/lib/leader.js:77:23)
    at listOnTimeout (timers.js:324:15)
    at processTimers (timers.js:268:5)
name: "ClusterClientNoResponseError"
pid: 3167
hostname: xxx-Pro.local

相关环境信息

atian25 commented 5 years ago

试下 npm

这个报错常见于 CPU 100% 时

dingangang commented 4 years ago

ClusterClientNoResponseError 之前这个问题我也经常见,无解。。

我也有这个问题。我是要读取微信的jssdk授权。 如果放在生命周期函数willReady中去执行。 3~5分钟,必出这个错。

如果是放在其他地方,等有请求进入时再请求授权则不报这个错。

可用区:深圳 可用区C (cn-shenzhen-c) 网络类型:专有网络 配置信息规格:1 vCPU 2 GiB(ecs.t5-lc1m2.small) I/O 优化:是带宽付费类型:按固定带宽带宽:1 Mbps

而且我npm start 的情况下,几分钟之后,cpu直接满载了。 一直没找到会满载的原因。

dingangang commented 4 years ago

发现个有意思的事。我还是用PM2部署启动项目,就不会满载。。。。

根目录建server.js

// server.js const egg = require('egg');

const workers = Number(process.argv[2] || require('os').cpus().length); egg.startCluster({ workers, baseDir: __dirname, }); ———————————————— 版权声明:本文为CSDN博主「clearlxj」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/clearlxj/article/details/88708709

然后 pm2 start server.js --name test

测试了大概一个小时没出现CPU满载的情况。

atian25 commented 4 years ago

也可能是一些 Sync 的同步操作导致的。 可以用 Alinode 分析 cpu 耗时。

gxcsoccer commented 4 years ago

@wangweiwei @dingangang 能否提供可复现的方式?

thinkerHope commented 3 years ago

同遇到,放app.ready里就不报错了...