3Node.js代码优化你的未知

3Node.js代码优化你的未知
一个js程序操作可能会由于CPU和输入输出操作的限制很慢。一个缓慢的程序从CPU的角度运行的典型原因是不合理的热路径(一段代码,经常访问)。从投入产出的观点,程序的速度的限制可能会受底层操作系统或从节点本身的故障,或更多,一个缓慢运行的程序可能没有任何节点本身。问题是外部资源,如数据库查询或API调用,这些问题没有得到优化

在本文中,我们将着重于识别和优化可能导致代码库中CPU大量运行的操作,同时对生产应用程序配置文件进行讨论,并对提高操作效率的变化进行分析和制定。

由于节点的单线程的性质,这是为了避免对服务器的CPU负荷重特别重要。因为CPU所消耗的时间占的时间响应其他的请求。如果你注意到你的应用程序响应缓慢,和CPU的过程中占据一个更高的频率,对你的计划有助于找出瓶颈,使程序恢复到一个快速运行状态。

分析与应用

复制生产环境的缓慢的程序问题是很难解决的问题,这是非常time-consuming.fortunately,你不需要做你自己。你可以收集在生产服务器的配置文件数据和分析离线。让我们通过一些分析方法一看。

1。使用内核级工具

首先,你可以使用内核级的工具,如DTrace(Solaris,BSD),性能(Linux),或XPerf(Windows),从运行过程中采集的堆栈跟踪信息,然后生成火焰图。内核级的分析对运行过程的影响最小。火焰的图是一个向量图:减少基于调用栈的支持产生的视图。在完善Linux系统从Netflix豫农小公司,使伟大的演讲和微博,帮助你加深对技术的理解。如果你想保持在一个高吞吐量生产程序,使用此方法可供参考

2。使用V8分析仪

另一种选择是直接使用V8分析仪。这种方法与程序共享的过程,所以它会影响程序的性能。为此,请运行V8分析仪捕捉到相关的输出,只有当你遇到这样的问题。这种方法的优点是,你可以使用所有的对铬的分析工具,其输出的程序研究(包括火焰图)。

请运行以下代码测试您的程序:
NPM安装V8分析器-保存
然后,在程序中添加以下代码:
const仪=需要('v8-profiler)
const FS =需要('fs)
无功profilerrunning = false
功能toggleprofiling(){
如果(profilerrunning){
const型= profiler.stopprofiling()
console.log('stopped分析)
profile.export()
。管(fs.createwritestream('。 / MyApp+ Date.now()+。cpuprofile '))
错误。一次,探查器。deleteallprofiles)
。一旦('finish,探查器。deleteallprofiles)
profilerrunning = false
返回
}
profiler.startprofiling()
profilerrunning =真
console.log('started分析)
}
process.on('sigusr2 ',toggleprofiling)
只要你发送SIGUSR2信号这一过程,它开始分析。发送SIGUSR2信号停止分析(代码如下)。
杀SIGUSR2 PID } {
该过程的分析结果将写入当前工作路径的文件(请确保路径可写)。因为这是一个可编程的接口,你可以触发它时(使用Web端点,IPC,等等)。如果你有一种预感,当程序变得慢,你可以在任何时候触发接口。它是建立避免连续监控程序自动触发非常有用,但它需要你有一个捕获时间和长度可感知的捕捉。

一旦您收集了配置文件数据,将其加载到Chrome开发工具中并开始分析它!
三.使用进程管理

虽然V8解析器直接使用是非常有效的,可定制的,它将进入你的代码库,并添加另一个依赖条件,你可能不想添加到项目中,一种替代的方法是使用一个进程管理器,它可以把你的程序用的各种工具的时候,你需要分析一个可选的工具。是SLC的命令行工具从StrongLoop。

首先,运行新安装StrongLoop - G,然后运行下面的代码:
SLC开始{ / / /应用程序路径}
上面的代码将在进程管理器中启动您的程序,您可以根据需要提取CPU分析数据:
SLC CTL
您将得到与下面类似的结果:
服务ID:1
服务名称:我的慢程序
环境变量
名称值
node_env生产
实例:
版本代理版本调试器版本集群大小驱动程序元数据
2.0.2版本5.0.1 1 N / A
过程:
ID和监听端口跟踪对象的CPU仿形跟踪调试
1.1.61022 610220
610231 0.0.0.0:3000 1.1.61023
定位应用程序ID,在这种情况下的过程中,我1.1.61023.now我们随时可以开始分析和运行下面的代码:
SLC CTL CPU开始1.1.61023
当我们感觉到我们遇到了延迟时,我们可以运行以下代码来停止解析器:
SLC CTL CPU停止1.1.61023
下面的代码将把文件写入硬盘
CPU的配置文件写入`节点。1.1.61023。cpuprofile `,负荷为Chrome开发工具
好吧,就是这样。你可以把文件加载到Chrome中,就像V8分析仪中那样。

做出正确的决定

在本文中,作者展示了三种捕获节点生产环境中CPU使用量的方法,那么您应该选择哪一种呢这里有一些想法可以帮助你减少你的决定范围:

我需要分析很长一段时间:使用内核级工具。
我想使用Chrome开发工具:使用V8分析器或进程管理器。
我想捕获应用程序中的特定行为:使用V8分析器。
我不想影响程序性能:使用内核级程序。
我希望我没有一个一个的测试文件来获取程序分析信息:使用进程管理器
以上是本文的全部内容,3种js代码优化,我希望你能熟练掌握它。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部