node-qps
Version:
Test Node Application QPS
93 lines (76 loc) • 2.75 kB
text/typescript
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();
}
}