





















@@ -203,25 +203,39 @@ function collectGatewayProcessResourceCounts(): ReadonlyArray<readonly [string,
203203const processWithResourceAccess = process as NodeJS.Process & {
204204_getActiveHandles?: () => unknown[];
205205_getActiveRequests?: () => unknown[];
206+getActiveResourcesInfo?: () => string[];
206207};
207208const activeHandles = processWithResourceAccess._getActiveHandles?.();
208209const activeRequests = processWithResourceAccess._getActiveRequests?.();
210+const activeResources = processWithResourceAccess.getActiveResourcesInfo?.();
209211const metrics: Array<readonly [string, number]> = [
210212["processSigintListenersCount", process.listenerCount("SIGINT")],
211213["processSigtermListenersCount", process.listenerCount("SIGTERM")],
212214["processSigusr1ListenersCount", process.listenerCount("SIGUSR1")],
213215];
214216if (activeHandles) {
215217metrics.push(["activeHandlesCount", activeHandles.length]);
216-metrics.push(["activeTimersCount", countActiveTimers(activeHandles)]);
217218}
218219if (activeRequests) {
219220metrics.push(["activeRequestsCount", activeRequests.length]);
220221}
222+const activeTimersCount = activeResources
223+ ? countActiveTimersFromResourceInfo(activeResources)
224+ : activeHandles
225+ ? countActiveTimersFromHandles(activeHandles)
226+ : undefined;
227+if (activeTimersCount !== undefined) {
228+metrics.push(["activeTimersCount", activeTimersCount]);
229+}
221230return metrics.length > 0 ? metrics : null;
222231}
223232224-function countActiveTimers(activeHandles: readonly unknown[]): number {
233+function countActiveTimersFromResourceInfo(activeResources: readonly string[]): number {
234+return activeResources.filter((resource) => resource === "Timeout" || resource === "Timer")
235+.length;
236+}
237+238+function countActiveTimersFromHandles(activeHandles: readonly unknown[]): number {
225239let count = 0;
226240for (const handle of activeHandles) {
227241if (typeof handle !== "object" || handle === null) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。