100%的cpu使用情况配置文件输出,根据我们的配置文件日志,这可能是什么原因导致的?

时间:2019-06-27 20:30:27

标签: node.js profiling cpu-usage v8

我们有一个大规模的nodejs项目(约100万名以上的用户),突然间我们的CPU遭受了巨大的打击。 (Epyc 24c 2ghz)

我们一直在尝试使用探查器调试所有CPU的使用情况(我可以在下面向您展示输出),无论它是什么,它的表现都非常奇怪。

我们有一个主进程,在它们全部加载后会生成48个集群,而CPU的使用率会慢慢增长到最大值。杀死集群后,LA完全不会掉线。但是,在终止主进程后,一切都会恢复正常。

主进程显然不会最大化所有线程,杀死集群真的可以解决问题吗?

profile

我们甚至完全停止了应用程序和集群的用户输入,并且根本没有减少cpu的使用。

如果您需要的话,我们可以发送大量日志文件。

1 个答案:

答案 0 :(得分:0)

根据配置文件,代码似乎花费大量时间从系统获取当前时间。围绕一堆经常使用且相对较快的操作,您是否有try { $zipex=Microsoft.PowerShell.Archive\Expand-Archive -LiteralPath "C:\aaaa\bbbbb" -DestinationPath "D:\var\log" -Force -ErrorAction Stop } catch [System.Management.Automation.PSArgumentException] { Write-Verbose "Path $($_.TargetObject) not found!" -Verbose } (或老式的效率低下的Date.now())电话?尝试删除它们,您应该会看到加速(或分别降低CPU利用率)。

关于停止用户输入而不减少CPU负载:您是否可能安排回调?或诺言,或其他异步请求?编写只需要启动然后让CPU永远保持忙碌状态的程序并不难。

除了这些粗略的猜测之外,这里没有足够的信息来深入研究。除了与时间相关的资料外,还有其他内容吗?特别是您自己的代码?自下而上的个人资料怎么说?