node JS獲取GPS_Node.js 12.0.0 的一个小故事

407c54a4fbcd9f556c7efc9bb43ffb76.png

前几天 Node.js 12.0.0 发布了,网上也有很多文章介绍这个版本的新的特性,例如 https://www.yuque.com/egg/nodejs/nodejs-12,不过今天我想要介绍的是另外一个小故事。

我们在公司内部使用 Node.js 的时候,遇到了一个困扰我们很久的问题,Node.js 进程的 CPU 使用率经常会达到 100%,很多产品线都会遇到,而且问题复现非常困难,偶尔复现之后,进入到容器用过 strace 来查看系统调用,发现 epoll_ctl 和 epoll_pwait 这两个系统调用占用大部分CPU时间,虽然问题经常出现,但是是偶发性的,所以之前并没有花费太多的精力去追查。然后突然某一天,线上所有的 Node.js 服务在同一时刻,都出现了这个问题,所以解决这个问题刻不容缓。

在 oyyd 和 yeyuanfeng 排查了很久之后,最终由 yeyuanfeng 同学帮忙把这个问题搞定了,整个问题的追查过程非常精彩,但是版权属于 yeyuanfeng 同学,我这里就不放出来了。相关的 Issue 和 Pull Request 大家可以参考:

CPU Usage 100% · Issue #2162 · libuv/libuv​github.com
c0f8b57dcfd7532a254b16758f61542b.png
unix: fix epoll cpu 100% issue by tsyeyuanfeng · Pull Request #2166 · libuv/libuv​github.com
c0f8b57dcfd7532a254b16758f61542b.png

目前发布的 Node.js 12.0.0 里面已经包含了这次的改动,相关的 Commit 地址是:https://github.com/nodejs/node/commit/0109e121d3a2f87c4bad75ac05436b56c9fd3407

---

PS: 前几天跟 @Rokid 的同学 @Yorkie 交流的时候,这个 Patch 刚好也解决了他们的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值