-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
egg部署在线上环境,偶发性CPU居高不下 #3381
Comments
排查一下业务代码看一下有没有造成内存泄漏的逻辑,内存满了会引起 node 进行频繁 gc ,就会导致 cpu 飙升,很大概率是业务代码有问题导致的 |
如果容易重现可以在有问题的时候看一下 node 进程的内存和 CPU 占用是怎样的。另外你用什么方式接入 Alinode 的? |
就是不容易重现啊。。。什么时候出现、出现的时机都是无法确定的 接入alinode,通过服务器那边去接入的,不是通过项目接入 |
不复现的话我们也没办法跟进啊。 代码里面有没有 sync 之类的代码 |
Hello @DodoMonster. Please provide a reproducible example following the instruction. Issues labeled by @DodoMonster,请根据这个说明提供最小可复现代码。 如果在 7 天内没有进展会被自动关闭。 |
接入 alinode 后,根据 快速设置告警规则 设置一下 CPU 报警阈值,比如默认是 单进程 CPU 使用超过 80% 的时候告警。 那么等你收到告警短信的时候,上 Node.js 性能平台的控制台,对目标 CPU 高的进程做一个 CPU Profile,然后观察 CPU 耗费在什么地方。 像这种 CPU 高的问题,单纯给代码是没有用的,如果有 CPU Profile 等信息,倒是可以看一下 |
另外,看你描述是卡死,很可能有类似正则回溯引发的类死循环,因为 Node 是单工作 JS 主线程的运行模型,所以会阻塞住后续的用户访问,导致看起来好像是卡死的状态。 这个问题可以用性能平台提供的 诊断报告 功能进行确认,详细可以参考 死循环和正则攻击定位 |
代码没有使用sync的 |
你的是多核机器啊,单进程 CPU 超过 100% 有啥奇怪的,说明应用负载比较高,但是还没到机器 CPU 的极限呗 |
排查进程为啥 CPU 高的方法上面已经写了,alinode 使用问题可以加钉钉群 11794270 私聊,没有其它问题这个 issue 先关闭了? |
你是在alinode看的cpu占用的对吧 数据库在本台服务器上没 如果在 不一定是egg的原因 可能是数据库索引不对把cpu资源耗尽了 |
What happens?
复现步骤,错误日志以及相关配置
pf-ae-mb-web.log.2019-01-01 应用访问日志
2018-12-30 21:53:55,560 INFO 13657 [-/10.21.20.88/-/1354ms GET HTTP/200 9029 - 1353 - Mozilla/5.0 (iPad; CPU OS 9_3_5 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G36 Safari/601.1
2019-01-01 13:53:31,699 INFO 6373 [-/10.21.20.88/-/210ms GET /home] [access] 116.21.94.93: - GET /home HTTP/200 25011 203 - Mozilla/5.0 (Linux; U; Android 8.0.0; zh-cn; MI 6 Build/OPR1.170623.027) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.4.5
2019-01-01 13:53:31 这个时间段重启方有正常的访问日志进来,即2018-12-30 21:53:55~2019-01-01 13:53:31应用无法正常访问,访问页面出现504超时
查日志追查到,以下错误信息:
2018-12-30 20:53:20,831 ERROR 13645 nodejs.ClusterClientNoResponseError: client no response in 69985ms exceeding maxIdleTime 60000ms, maybe the connection is close on other side.
at Timeout.Leader._heartbeatTimer.setInterval [as _onTimeout] (/node_modules/cluster-client/lib/leader.js:73:23)
at ontimeout (timers.js:469:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:264:5)
name: 'ClusterClientNoResponseError'
pid: 13645
hostname: Nodejssa253
2018-12-30 21:54:40,937 ERROR 13645 nodejs.ClusterClientNoResponseError: client no response in 60022ms exceeding maxIdleTime 60000ms, maybe the connection is close on other side.
at Timeout.Leader._heartbeatTimer.setInterval [as _onTimeout] (/node_modules/cluster-client/lib/leader.js:73:23)
at ontimeout (timers.js:469:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:264:5)
name: 'ClusterClientNoResponseError'
pid: 13645
hostname: Nodejssa253
相关环境信息
操作系统:
Linux version 2.6.32-642.15.1.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-17)
Node 版本:
v8.5.0
Egg 版本:
"version": "1.13.1"
The text was updated successfully, but these errors were encountered: