问题标签 [v8-profiler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 如何在运行时触发 NodeJS 中的分析?
我们有一个非常有状态的基于 NodeJS 的 Web 服务器(Meteor),它偶尔会在生产中随机变慢。这个问题在我们的任何测试中都无法重现,我们不知道是什么触发了它。
为了诊断这一点,我们使用了v8-profiler包。这让我们可以触发一个 10 秒的 CPU 配置文件并下载它以进行离线分析。
尽管 3 年内没有收到任何提交,但该软件包过去运行良好。过去它给我们带来了编译麻烦,现在看起来它完全停止了编译,破坏了我们的构建。构建发生在 Docker 容器中,所有版本都固定,包括 NodeJS 和 v8-profiler 本身,所以我们不太可能最终解决这个问题。
我认为必须有一些替代的,更好的维护方法。但它在哪里?
(请注意,使用附加标志(如--profile
)重新启动服务器不是一种选择,因为它会破坏问题的所有证据。)
node.js - 我可以通过 v8-profiler 分析运行方法吗
我v8-profiler
用来调查我的生产站点上的 CPU 100% 问题。为了找出导致我的 CPU 问题的 API,我在应用程序检测到 CPU > 90% 时启动了分析器。但不幸的是,当我打开配置文件时,我找不到任何耗时超过 100 毫秒的函数。
我想检查是否调用了 CPU 敏感函数然后分析器开始工作,它是否被捕获。我检查了自述文件,v8-profiler
但他们没有提到,我能找到的所有示例都遵循 start-profile -> begin CPU-sensitive function function -> save-profile 的过程。
node.js - 轮换 v8 探查器日志文件
有没有办法旋转运行 v8 分析器时生成的隔离文件?我有一个长时间运行的应用程序,并希望定期保留快照以进行半实时处理。
似乎没有内置的方法,但我希望有一种解决方法。如果需要的话,我什至很乐意自己编写快照逻辑。
node.js - 在本地/开发环境中分析 NestJS 函数
我有一个 NestJS 项目,其中包含从 Angular 11 中开发的 UI 调用的一堆函数。我正在尝试在本地和开发环境中运行分析器,但我不知道如何做到这一点 - V8 分析器/火焰图表。任何见解将不胜感激。我正在使用 IntelliJ 和 Jenkins 管道来构建代码并将其部署到不同的环境。
示例:在 Nest JS 项目中,我们有一个带有一些功能的 API。
msyAPI.ts
如何在此代码上运行分析器以获取 msyAPI.ts 中每个函数的性能指标?您如何将代码置于负载下?我是在 Angular 应用程序上使用分析器还是可以直接在 Nest JS 代码上使用它?我是否在本地运行 Angular Web 应用程序,然后在 UI 运行时运行分析器?但这只是一个用户点击 API ......
抱歉,我对此很陌生,并且在网上找不到太多有用的信息来说明如何在开发、阶段或生产环境中分析 Nest JS API。
提前致谢。
node.js - 为什么从另一个调用的函数不会显示在节点应用程序的配置文件输出中?
我有一个 NodeJS 程序。这是一个更大程序的精简版本,具有很多复杂性,与这个问题无关。它通过列表寻找匹配的对象:
现在,calculateOrder 所做的就是重复调用 matchRules 下列出的函数,然后调用 areDefinedAndEqual 来进行一些实际检查。
现在,如果我按如下方式运行:
我得到了我所期望的。到目前为止,一切都很好。然后我可以通过 prof-process 运行配置文件输出以获得更具可读性的内容。
但是,如果我查看输出,我会看到:
所有的时间都花在了calculateOrder上。我希望看到大部分时间花在各种“查找”函数和 areDefinedAndEqual 中,但我没有。根本没有提到它们中的任何一个。为什么?它们是否可能以某种方式被优化/内联?如果是这样,我该如何开始调试呢?还是对某些未在输出中显示的功能有一些限制?在这种情况下,这些限制在哪里定义?任何指针将不胜感激。
我正在运行节点 v16.5.0
node.js - 在运行 Protractor 测试时捕获堆快照(Chrome 开发工具)
我想创建一个自动量角器测试,在 Chrome 中打开应用程序并通过量角器执行一系列操作后创建一个堆快照。然后在内存选项卡中的 Chrome 开发工具中上传两个快照并进行比较。问题是应用程序类在快照中不可用,仅测试相关信息。在运行 Protractor 测试时有没有办法做到这一点?我尝试过的快照库是 heapdump、v8-profiler-next 和其他几个,但结果相同。
谢谢!