Node.js V8标记扫描优化?

时间:2018-10-17 08:58:13

标签: node.js garbage-collection v8 event-loop

对于我的服务器而言,标记清除操作似乎需要世界各地的停顿时间:

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" rel="stylesheet" />
<div class="row">
  <div class="col-12 ">
    <div class="strike">
      <button class="btn tw">
        <i class="fab fa-twitter"></i>
      </button>
      <button class="btn fb">
        <i class="fab fa-facebook-f"></i>
      </button>
      <button class="btn ms">
        <i class="fab fa-facebook-messenger"></i>
      </button>
    </div>
  </div>
</div>

此行为与https://github.com/nodejs/help/issues/947中描述的行为类似,它似乎与内存消耗有些相关,并且随着时间的推移会恶化。

该问题存在于节点7中,但几乎没有引起注意。现在有了节点8.12,它在24小时内达到了5秒的间隔。

我怀疑这可能与将数据存储在大对象中的非常规方式有关,试图将一个2 GB的对象重构为较小的对象,将其缩减至1 GB,但是没有明显的好处。但是,这些对象很大却很简单。

问题是:

  • 是否有V8选项可以进行标记扫描来减轻此问题?更少的机会,更小的步骤,跳过一些优化,什么?

  • 我找不到有关V8选项的任何不错的文档-在那里吗?

  • 如何帮助打标扫描更有效地完成任务?

  • 在一些常见情况下,应如何避免标记扫描可能遇到的困难?

  • 我可以尝试任何绝望的骇客吗?

0 个答案:

没有答案