@ 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- 延伸的主要单子类EventEmitterTaskEvent- 事件命名常数:TaskEvent.CpuProfileCreated财务报告和审定财务报表TaskEvent.HeapSnapshotCreatedCpuProfileFileExt- 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 参数.