为啥 Gaze 会消耗高 CPU?

Posted

技术标签:

【中文标题】为啥 Gaze 会消耗高 CPU?【英文标题】:Why is Gaze consuming high CPU?为什么 Gaze 会消耗高 CPU? 【发布时间】:2016-12-22 14:27:02 【问题描述】:

我正在运行凝视 (https://github.com/shama/gaze) 来观察包含数百个文件的多个文件夹的变化。现在该进程消耗了稳定的 15% 的 CPU,这意味着四个核心中有一个完整的核心。

我进行了检查 - 我在同一个文件夹列表上运行 fs.watch,并获得了具有类似功能的 0.0% CPU。

现在,问题是 - 除了阅读代码之外,我如何弄清楚凝视在做什么?有什么分析工具吗?

此外,您是否已经知道问题可能出在哪里?

系统详情: 操作系统 10.10 节点 6.9.1 凝视 1.1.2

【问题讨论】:

【参考方案1】:

原因原来是 fs.watchFile 的使用,默认的 gaze 间隔为 100 毫秒。 Node 原生函数的默认间隔是 5007 毫秒(根据文档 - https://nodejs.org/docs/v6.9.1/api/fs.html#fs_fs_watchfile_filename_options_listener),因此使用间隔 === 5007 调用凝视可以解决问题(以及在凝视源中注释掉 fs.watchFile)。

我现在担心的是 fs.watch 和 fs.watchFile 都被使用了,其中一个可能是多余的,但这是另一个问题。

附:我尝试使用 node --prof 来分析该过程,但没有找到对我有用的信息。

【讨论】:

以上是关于为啥 Gaze 会消耗高 CPU?的主要内容,如果未能解决你的问题,请参考以下文章

为啥Java的socket.connect()会消耗100%的cpu资源?

为啥我的程序在 nVidia NView 下会消耗 100% CPU?

Threading.Timer 应用程序消耗超过 50% 的 CPU,为啥?

io等待为啥引发cpu过高

高CPU消耗MySQL

JAVA 消耗 CPU过高排查方法