@astraload/profilers

中文文档
4.0.1发布于 2025/06/07ISCTypeScriptCommonJS零依赖近 30 天下载 2.3万

多进取Meteor网络应用程序的 CPU 配置器和堆放器

中文使用文档
文档目录7 节
  1. 安装
  2. 基本用途
  3. 高级用途
  4. API 密码
  5. 剖析器类
  6. 预览类
  7. 垃圾桶类

@ astraload/ profiles (帮助)

多进取Meteor网络应用程序的 CPU 配置器和堆放器

安装

npm install @astraload/profilers

基本用途

import { Profilers } from '@astraload/profilers';
const profilers = new Profilers();

它将创建一个配置器类的实例 。 剖析器是单子类,所以这个类总是只有一例. 该类被制成单子,以防止CPU剖面/取取重拍快取任务的重叠.

创建 CPU 描述文件的例子 :

async function createCpuProfile(duration, samplingInterval) {
  const profilers = new Profilers();
  const { fileName, filePath } = await profilers.cpu.profile(duration, samplingInterval);
  return { fileName, filePath };
};

创建堆积快照的例子 :

async function takeHeapSnapshot() {
  const profilers = new Profilers();
  const { fileName, filePath } = await profilers.heap.takeSnapshot();
  return { fileName, filePath };
};

生成的文件位于 /tmp 文件夹及其名称包含12个随机字符.

高级用途

这个软件包允许在多智能Meteor网络应用设置中创建CPU配置和堆放快照. 为此,软件包使用一个辅助的MongoDB收藏 instanceTasks。每个 Meteor 网络应用程序实例需要调用 profilers.startObserving(instanceName) 在其启动勾钩中启动一个 instanceTasks 藏书。 当新任务被添加到该收藏中时,将触发相应的CPU配置文件或堆积快照的创建:

import { Meteor } from 'meteor/meteor';
import { Profilers, TaskEvent } from '@astraload/profilers';

Meteor.startup(() => {
  const profilers = new Profilers();
  profilers.on(TaskEvent.CpuProfileCreated, handleFileCreated);
  profilers.on(TaskEvent.HeapSnapshotCreated, handleFileCreated);
  const instanceName = getInstanceName();
  profilers.startObserving(instanceName);
});

function handleFileCreated({ instanceName, fileName, filePath }) {
  /* Do whatever you need with the created file */
}

function getInstanceName() {
  /* return a unique identifier of the web app instance */
}

另外,在启动钩子中,您可能想要注册处理器 TaskEvent.CpuProfileCreated 财务报告和审定财务报表 TaskEvent.HeapSnapshotCreated 事件。 在处理器中,您可能想要将所生成的文件上传到云存储以备日后检查或做其他事情.

现在,随着每个网络应用实例的启动 instanceTasks 集合,我们可以通过调用来启动创建 CPU 配置文件或对特定网络应用实例的繁忙快照 scheduleTask(instanceName) 方法 :

function createCpuProfile(duration, samplingInterval) {
  const profilers = new Profilers();
  const instanceName = getInstanceName();
  profilers.cpu.scheduleTask(instanceName, duration, samplingInterval);
};

function takeHeapSnapshot() {
  const profilers = new Profilers();
  const instanceName = getInstanceName();
  profilers.heap.scheduleTask(instanceName);
};

function getInstanceName() {
  /* return a unique identifier of the web app instance */
}

您可能想要在网络应用程序中定义相应的Meteor方法,以便在任意的时间点触发创建 CPU 配置文件或对特定网络应用程序的快速快照 。 当产生的文件被创建时,相应的事件会起火: TaskEvent.CpuProfileCreated 或者说 TaskEvent.HeapSnapshotCreated

API 密码

软件包输出以下实体:

  • Profilers - 延伸的主要单子类 EventEmitter
  • TaskEvent - 事件命名常数: TaskEvent.CpuProfileCreated 财务报告和审定财务报表 TaskEvent.HeapSnapshotCreated
  • CpuProfileFileExt - CPU 配置文件扩展名常数
  • HeapSnapshotFileExt - 堆积快照文件扩展名常数
  • logInColor(message) - 记录以青色向控制台提供消息的帮助函数

剖析器类

Profilers 班级有下列公众成员:

cpu - 一个实例 CpuProfiler 课.

heap - 一个实例 HeapDumper 课.

startObserving(instanceName) - 创建一个观察员的方法 instanceTasks MongoDB 收藏,用于过滤后添加的文档 instanceName 字段。 处理器 added 然后触发相应的 CPU 配置文件或堆积快照的创建。 每项新的援引 startObserving 方法在创建新观察器之前停止前一个观察器。 这个 instanceTasks MongoDB收藏是在第一次引用方法时创建的.

stopObserving() - 一个阻止观察者的方法 instanceTasks 芒果DB收藏.


预览类

这个 CpuProfile 班级采用下列公开方法:

isProfiling() - 返回值 profiling 旗帜,表示CPU剖析正在进行中。 这个 profiling 旗帜只在CPU剖析进程被触发时自动管理 scheduleTask 方法。 防止CPU剖面分析因以下因素所引发的重叠: profile 您还需要手动设置 profiling 使用 setProfiling 方法.

setProfiling(value) - 套装 profiling 标记为提供的布尔 value。 。 。 .

profile([duration, [samplingInterval]]) - 创建理想的CPU简介 duration 和特定 samplingInterval,将其保存到磁盘中。 方法返回一个包含创建文件信息的对象解决的保证 : { fileName, filePath }。 。 。 .

scheduleTask(instanceName, [duration, [samplingInterval]]) - 增加一项任务 instanceTasks 用于配置网络应用程序实例的 CPU 的收藏 instanceName 预定费用 duration 和特定 samplingInterval。 。 。 .

两者 profile 编辑 scheduleTask 方法, duration 财务报告和审定财务报表 samplingInterval 参数是可选的,并有下列默认值:
duration (单位:千美元) 毫发秒) - 6000毫秒,1分钟.
samplingInterval (单位:千美元) 微观秒) - 1000微秒为一毫秒.


垃圾桶类

这个 HeapDumper 班级采用下列公开方法:

isDumping() - 返回值 dumping 说明大量倾倒正在进行中的旗帜。 这个 dumping 只有在倾销过程由 scheduleTask 方法。 防止因《公约》引起的堆积倾销的重叠 takeSnapshot 您还需要手动设置 dumping 使用 setDumping 方法.

setDumping(value) - 套装 dumping 标记为提供的布尔 value。 。 。 .

takeSnapshot() - 取一个堆积快照,将其保存到磁盘中并返回包含创建文件信息的对象: { fileName, filePath }。 。 。 .

scheduleTask(instanceName) - 增加一项任务 instanceTasks 收藏以获取一个由 : instanceName 参数.

版本与发布记录

@astraload/profilers 共发布 14 个版本,首次发布于 2019/11/20;过去 12 个月发布了 0 个版本。

版本发布日期距今
4.0.1latest2025/06/071.4 年前
4.0.02025/02/171.7 年前
3.0.12024/10/292 年前
3.0.02023/11/092 年前
2.0.22021/07/295 年前
2.0.12021/07/075 年前

关于 @astraload/profilers 的常见问题

@astraload/profilers 是什么?

多进取Meteor网络应用程序的 CPU 配置器和堆放器

如何安装 @astraload/profilers?

在项目目录运行 npm install @astraload/profilers,或使用 pnpm add / yarn add / bun add。

@astraload/profilers 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@astraload/profilers 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@astraload/profilers 可以商用吗?

@astraload/profilers 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@astraload/profilers 的下载量有多少?

根据 npm 官方下载统计,@astraload/profilers 在 2026/10/07 – 2026/11/05 这 30 天内被下载 22,760 次,日均约 759 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@astraload/profilers 还在维护吗?

最新版本 4.0.1 发布于 2025/06/07(1.4 年前);至今共发布 14 个版本,其中过去 12 个月发布了 0 个;首次发布于 2019/11/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。