Node.js --debug-brk 极其缓慢

4
我正在使用node v6.10.0,并试图找出为什么我的--debug-brk非常缓慢。没有这个标志(只有--inspect或--debug),它几乎是瞬间的,尽管调试器仍然需要很长时间来附加。
这一个标志显着增加了加载时间。当启用调试时,我的项目需要50秒以上才能启动。
有什么想法可以开始调试此问题吗?
编辑:明确一下,它在两台计算机上都发生,并且在Hello World上不会发生。
编辑2:更多细节。我正在使用es6。我使用webstorm记录了正在进行的操作,并发现它花费了很长时间来读取所有模块?也许这就是问题所在?
有方法可以加速吗?仅加载所有require语句就需要34秒钟。
编辑3:绝对是文件和require语句的问题。我将一些require语句移动到仅在数据库连接建立后加载。连接立即建立,但之后进程卡住了(再次几秒钟)。
有任何方法可以加速吗?

我在我的树莓派上使用node.js时也遇到了这个问题。我得出的结论是,调试器占用了足够多的额外内存(在相对较小的内存树莓派上),以至于操作系统耗尽了物理内存,因此开始进行磁盘交换,这就是我的速度缓慢的原因。不知道你是否有类似的原因,但值得考虑。 - jfriend00
这是纯ES6还是经过转译的ES6?调试器是否加载了.map文件?如果使用不同的标志时可以正常加载,那么问题不可能仅仅出在你的require()语句上。无论如何,所有的require()语句都必须发生。因此,问题肯定出在其他地方。 - jfriend00
你预计加载500个文件需要多长时间?听起来你的瓶颈只是在磁盘上。 - jfriend00
但是为什么普通的Node.js应用程序启动和--debug-brk之间会有所不同呢?或者调试或--inspect呢?所有这些都要快得多,但--debug-brk是唯一一个慢的。 - MattEnth
你在使用 Babel 吗?如果是的话,那就是罪魁祸首了。 - mrBorna
显示剩余2条评论
1个回答

1
你所说的“加载时间”是什么意思?你是指从打开前端工具(例如Chrome DevTools)到脚本第一行断点被触发之间的时间吗?
根据你的描述,似乎存在套接字连接缓慢的问题。需要检查以下几点:
1. 如果Node.js版本输出的URL中包含“localhost”,请将其替换为“127.0.0.1”。某些操作系统使用DNS解析此名称时可能会失败或缓慢。 2. 是否有网络访问问题?特定的Chrome DevTools版本必须下载适用于您的节点版本,这可能会很慢。
这可能是特定的Node.js版本中的错误(我记不起会导致这种情况的具体原因)。令人困惑的是,这是应用程序特定的——当您使用“--debug-brk”或“--inspect-brk”运行时,直到调试前端连接后才执行任何JS。
请考虑在 Node.js bugtracker上报告此问题-随意直接抄送给我(在错误描述中添加@eugeneo)... 有没有可能让我看看您的代码 - 例如,它是否在GitHub上? 另外-您是否可以尝试更新的Node版本?

谢谢您的帮助。我已将完整日志发布在此处,以便可能说明我所说的“加载时间”:http://c.opencritic.com/log.json。网络访问没有任何问题。我主要想使用WebStorm内置工具,尽管问题也会出现在命令行和Chrome中。一旦调试器附加上,一切都很好,但是附加的时间实在太长了。 - MattEnth
似乎Node方面没有太多可以做的事情。我还与V8开发人员交谈过-他们说这种性能是可以预期的...... 问题在于应用程序执行异常数量的脚本(V8和V8调试界面是为不引用成千上万个脚本的Web应用程序设计的)。这显然是Node.js必须解决的问题,但目前还没有解决方案。 - Eugene

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接