Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >nodejs分析未知和下落不明的结果

nodejs分析未知和下落不明的结果
EN

Stack Overflow用户
提问于 2016-07-01 04:43:10
回答 1查看 1.7K关注 0票数 20

我正在运行nodejs 4.4.7 LTS

我运行分析器,如下所示,https://nodejs.org/en/docs/guides/simple-profiling/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node --prof app.js

然后:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node --prof-process isolate-something-v8.log > processed.txt

我是不是漏掉了什么东西?

守则是关于什么的:

NodeJS应用程序是socket.io服务器将数据从网络发送到C++应用程序和恶意软件。

从下面的结果可以看出,这里有大量的下落不明的变量。在这种情况下,是什么导致了这种情况,以及如何知道我的应用程序的瓶颈是什么?什么是解决办法?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Code move event for unknown code: 0x61047523c0
Code move event for unknown code: 0x6104bf74a0
Statistical profiling result from isolate-000001E1507CF2D0-v8.log,     (211705 ticks, 210634 unaccounted, 0 excluded).

 [Shared libraries]:
   ticks  total  nonlib   name

 [JavaScript]:
   ticks  total  nonlib   name
     71    0.0%    0.0%  LazyCompile: *stringToBuffer *SOMETHING*\socket.io\node_modules\engine.io\node_modules\engine.io-parser\lib\index.js:359:24
     59    0.0%    0.0%  LazyCompile: listOnTimeout timers.js:56:23
     50    0.0%    0.0%  LazyCompile: *wrapper timers.js:274:19
     43    0.0%    0.0%  Stub: StringAddStub_CheckNone_NotTenured

    .
    .
    .


[C++]:
   ticks  total  nonlib   name

 [Summary]:
   ticks  total  nonlib   name
   1071    0.5%    0.5%  JavaScript
      0    0.0%    0.0%  C++
    202    0.1%    0.1%  GC
      0    0.0%          Shared libraries
  210634   99.5%          Unaccounted

 [C++ entry points]:
   ticks    cpp   total   name

 [Bottom up (heavy) profile]:
  Note: percentage shows a share of a particular caller in the total
  amount of its parent calls.
  Callers occupying less than 2.0% are not shown.

   ticks parent  name
  210634   99.5%  UNKNOWN
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-22 12:26:49

随时更新您正在使用的任何软件的最新稳定版本,Node.js 4.4.7已经有两年的历史了。

Mike在"Node.js -两个臭虫的故事“中的博客:

“使用完全相同版本的Node.js运行这两个命令非常重要。 不幸的是,当我试图对单个文件进行概要转换(执行时间大约增加了100% )时,Node.js 7.x和v8.0.0-test201511830c4bf319几乎一直显示为下落不明:. 在耗尽了我的Node.js调试技能之后,我问我能做些什么来尝试产生一个最小的测试用例,以及是否有任何主要的反模式会导致Node.js 7和8中的性能更差。 在这个阶段,我确信问题要么在于ajv (用于在swagger2openapi中验证JSON模式的库),要么在于should.js (我正在使用的BDD测试/断言库)。

Ben还指出,以下命令将提供更深入的分析信息,特别是哪些函数被取消优化,以及原因:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $ node8 --trace_opt --trace_deopt swagger2openapi petstore.json 

这指向should.js中的两行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ;;; deoptimize at <D:\nodejs\swagger2openapi\node_modules\should\cjs\should.js:152:14>, no cache

 ;;; deoptimize at <D:\nodejs\swagger2openapi\node_modules\should\cjs\should.js:68:14>, no cache 

这有助于缩小范围,我很快就想出了一个最小的测试用例,它显示了退步的行为。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 var should = require('should'); //11.2.0

 for (var i=0;i<10000;i++) {
     i.should.not.be.type('string');
 }

Node.js的撰稿人安娜·亨宁森( Anna )报告说,这是可以复制的。 ..。 他还提议尝试将修复程序移植到v8 6.0中,以便将其包含在Node.js的当前发布流中。然而,这一努力似乎已经停滞,但好消息是,修补程序已经出现在Node.js 9.0的夜间版本中,其中包括v8 6.1。 该计划是发布Node.js 8.7和v8 6.1,这应该解决了我所有的问题,但是,在Node.js 8.7中必须禁用的v8逃逸分析已经发现了一个问题--这可能会使这个版本没有我所希望的那么快。从v8 6.2获得的修复是否会在其进行LTS (长期支持)之前将其转换为Node.js 8.x仍然是一个猜测问题,但我留给您的是我的Node.js 6.11.4、8.6.0、8.7.0和9.0.0用例的比较时间。 ..。 如果您在开发环境中使用基于异常的断言工具,或者依赖于抛出的错误堆栈跟踪的任何性能关键代码,或者只是想知道自Node.js 6.x以来性能如何,那么您肯定应该考虑升级到Node.js 8.7。

  • 更新您的工具链和Nodejs。
  • 生成一个最小的测试用例来证明是否存在错误。
  • 阅读Bug报告、博客和您正在使用的软件的已知问题。

我以前和gcc有过类似的问题,不知道,也没有深入到共享库中,我用详细的调试(-ggdb IIRC)重新编译了我的整个工具链,这样我就可以看到一切。剥离容易去除多余的。这个特定的解决方案对于me是有用的,因为我参与了测试和错误报告,这对普通用户可能没有用,尽管拥有一个工具链的多个版本是非常容易的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38145769

复制
相关文章
nodejs接收微信支付通知结果
在统一下单中讲到了微信支付的统一下单,统一下单完成后就是客户端的事情了,根据返回的信息来调起微信支付,完成付款。当付款完成后,微信服务器会post支付结果通知我们,此接口需要单独来写,并且需要按照微信文档的要求来返回数据。
OECOM
2020/07/01
1.6K0
随机模拟和统计主要结果分析命令
本期分享的这份大表格相当的复杂,整理起来费了点时间,但总算是对概率和统计回归的常用命令勾勒出大致框架。里面的有限函数开起来稍微有点陌生
巴山学长
2020/11/26
5950
nodejs的dns解析源码分析
我们根据沿着这个例子的代码看一下nodejs的dns过程。我们先看一下dns.js里的lookup函数,下面是核心代码。
theanarkh
2019/03/15
4.6K0
未知攻,焉知防?——DDoS攻击方法之分析
P.S:绿盟科技的同学继续带来图文并茂的精彩技术科普: 世界杯盛宴,牵动着无数小伙伴的心,各种进攻战术惊心动魄,惊喜不断;而在网络世界,DDoS攻击亦是来势汹汹,但它带来的不是激动、不是振奋,而是破坏
FB客服
2018/02/02
1.8K0
未知攻,焉知防?——DDoS攻击方法之分析
孙权的DICS测试结果和瑜亮的数据分析
注:本文内容不涉正史,仅以《三国演义》为准。 DICS测试 DICS测验是有一种人格/个性测试,用于测查、评估人们的行为方式、人际关系、工作绩效、团队合作、领导风格等。共分为四个象限:D:Dominance(支配型), I:Influence(影响型), C:Compliance(分析型), 和S:Steadiness(稳定型)。被测者经过一系列考察(多通过答题进行)后,每个象限分别得到一个分数,分数最高的一到两个象限被用于描述该人人格,e.g.D象限得分最高,则可被成为highD,D和I得分接近而明显高于
叶锦鲤
2018/03/15
1.3K0
孙权的DICS测试结果和瑜亮的数据分析
nodejs的引用和导出
正如我们想的那样,nodejs每次只能运行一个js脚本,所以如果想运行多个js脚本可以采用引用(require)的方式
是小张啊喂
2021/08/10
7310
细胞通讯分析结果的解读
不过,虽然细胞通讯分析越来越普通,但它的难度并不会降低,在试图学习这个分析方法之前,大家需要自己提前了解一下:细胞通讯分析的背景知识,而且呢,还得看看细胞通讯分析的实例,多读文献,总归是没有错的!
生信技能树
2020/12/17
2.9K0
nodejs的引用和导出
正如我们想的那样,nodejs每次只能运行一个js脚本,所以如果想运行多个js脚本可以采用引用(require)的方式
是小张啊喂
2021/06/24
6290
面对未知服务器问题的选择和思考
今天上班看到备份机的负载高得惊人,达到了几百倍的负载,然后就开始排查问题,因为前几天大概看了下,我们锁所做的事情还是很有限的,就算动用重启大法也是收效甚微,忙忙碌碌一早上,好像进展也不大,不由得感叹,这种被动的处理问题的方式好像也没有多少技术含量,整体在忙啥。
jeanron100
2020/04/15
6640
面对未知服务器问题的选择和思考
通过源码分析nodejs的进程架构
我们知道nodejs是单进程(单线程)的,但是nodejs也为用户实现了多进程的能力,下面我们看一下nodejs里多进程的架构是怎么样的。 nodejs提供同步和异步创建进程的方式。我们首先看一下异步的方式,nodejs创建进程的方式由很多种。但是归根到底是通过spawn函数。所以我们从这个函数开始,看一下整个流程。
theanarkh
2020/03/31
6700
通过源码分析nodejs的进程架构
分析攻击结果?网络攻击溯源和取证
网络攻击的溯源和取证是指通过分析和调查,确定网络攻击的来源和确切证据,以便采取相应的行动,例如对攻击者提起诉讼或采取技术措施防范类似攻击。这个过程一般包括以下步骤:
夏洛斯攻防实验室
2023/02/19
1.9K0
分析攻击结果?网络攻击溯源和取证
Nodejs相关ORM框架分析
写这篇blog的原因,想找个node的ORM框架用用,确很难找到一篇对比分析这些ORM框架的文章,唯一找到了一篇,居然是通过star数来论英雄,我觉着很难服众,于是就找几个看看。后来又不想分析,因为我发现node这种野蛮生长,滋生这些ORM轮子比比皆是,远比我想象的多;后来又觉着可以写,作为一个java出身业余研究node的就想通过java的ORM框架来洞悉node这群ORM框架的是非曲直,于是挑了几个框架小扯一篇。
coder2028
2022/10/17
1.3K0
运行结果分析相关
一般方式也是最基本的方法是按照一定的规则压并发,看日志。专业一点的说法可以说“分段排除法“,或者按照以下顺序查找瓶颈。
张树臣
2019/07/31
9830
nodejs源码分析之线程
我们先分析一下这个代码的意思。因为上面的代码在主线程和子线程都会被执行一遍。所以首先通过isMainThread判断当前是主线程还是子线程。主线程的话,就创建一个子线程,然后监听子线程发过来的消息。子线程的话,首先执行业务相关的代码,还可以监听主线程传过来的消息。下面我们开始分析源码。分析完,会对上面的代码有更多的理解。 首先我们从worker_threads模块开始分析。这是一个c++模块。我们看一下他导出的功能。require("work_threads")的时候就是引用了InitWorker函数导出的功能。
theanarkh
2020/08/10
7400
nodejs源码分析之线程
长度未知的数组大小
malloc 和 calloc都可以被用于申请堆上的空间。 malloc 和 calloc主要有两点不同:
小飞侠xp
2021/04/13
2.5K0
nodejs之setImmediate源码分析
从上面的代码中我们知道,调用setImmediate函数后,nodejs会把回调和参数存在一个队列里。等待回调。然后处理队列里的每个节点。下面我们看一下处理函数的代码。
theanarkh
2019/03/19
9420
NodeJS和ReactJS,VUEJS的关系
网上找的科普贴,整理了一下发给大家,出处见底部链接。有许多类比的例子不太准确,大家参考下就行。
浩Coding
2019/08/26
6.2K0
NodeJS和ReactJS,VUEJS的关系
nodejs源码分析之connect
今天我们来分析connect函数。connect是发起tcp连接的api。本质上是对底层tcp协议connect函数的封装。我们看一下nodejs里做了什么事情。我们首先看一下connect函数的入口定义。
theanarkh
2020/07/27
7840
nodejs可读流源码分析
可读流是对数据消费的抽象,nodejs中可读流有两种工作模式:流式和暂停式,流式就是有数据的时候就会触发回调,并且把数据传给回调,暂停式就是需要用户自己手动执行读取的操作。我们通过源码去了解一下可读流实现的一些逻辑。因为实现的代码比较多,逻辑也比较绕,本文只分析一些主要的逻辑,有兴趣的可以参考文档或者自行深入看源码了解细节。我们先看一下ReadableState,这个对象是表示可读流的一些状态和属性的。
theanarkh
2020/07/22
8750
点击加载更多

相似问题

nodejs分析;什么可以是“未知的”

32

nodejs服务器脚本未知结果

10

分析未知结构和容错的表

10

未知策略"local",nodejs和passport

12

基准分析并显示分析和基准的结果?

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文