UNPKG

node-qps

Version:

Test Node Application QPS

93 lines (76 loc) 2.75 kB
export class Counter { private _requestCount: number; private _responseCount: number; private _requsetCountInLastTime: number; private _responseCountInLastTime: number; private _requsetCountOneTimeAgo: number; private _responseCountOneTimeAgo: number; private _QPS: number; private _collectTime: number; private _noResponseCount: number; private _collectTimer: any; constructor(collecTime = 1000 * 60) { this._requestCount = 0; this._responseCount = 0; this._requsetCountInLastTime = 0; this._responseCountInLastTime = 0; this._requsetCountOneTimeAgo = 0; this._responseCountOneTimeAgo = 0; this._noResponseCount = 0; this._collectTime = collecTime; // 默认一分钟 this._QPS = 0; this._collectTimer = this.startCollectTimer(); } public get requestCount(): number { return this._requestCount; } public addRequestCount(addCount: number) { this._requestCount += addCount; } public get responseCount(): number { return this._responseCount; } public addResponseCount(addCount: number) { this._responseCount += addCount; } public get noResponseCount(): number { return this._noResponseCount; } public get QPS(): number { return this._QPS; } public get responseCountInLastTime(): number { return this._responseCountInLastTime; } public get requsetCountInLastTime(): number { return this._requsetCountInLastTime; } public get collectTime(): number { return this._collectTime; } public startCollectTimer(): any { return setInterval(this.collect.bind(this), this._collectTime) } public clearCollectTimer(): void { clearInterval(this._collectTimer) } public collect(): void { let QPS = (this._responseCount - this._responseCountInLastTime) / (this._collectTime / 1000); this._QPS = Math.floor(QPS) / 100 this._responseCountInLastTime = this._responseCount; this._requsetCountInLastTime = this._requestCount; this._noResponseCount = this._requestCount - this._responseCount; } public clearMetric(): void { this._requestCount = 0; this._responseCount = 0; this._requsetCountInLastTime = 0; this._responseCountInLastTime = 0; this._requsetCountOneTimeAgo = 0; this._responseCountOneTimeAgo = 0; this._noResponseCount = 0; this._QPS = 0; this.clearCollectTimer(); this._collectTimer = this.startCollectTimer(); } }