Files
ttstd-infinite-canvas/web/src/services/api/system-performance.ts
ddcat666 4957f8bc22 feat(admin): Agent 并发 - 后台可调同时对话上限并展示 Agent 服务状态
新增运行策略 agentMaxSessions(默认 30,范围 1-64),保存后同时下发到内嵌进程闸门与独立 yingce-agent 的 /v1/limit,降低上限不会中断已开始的对话。系统性能页展示 Agent 服务健康、进行中/排队数量,并可直接修改上限。
2026-09-30 03:37:54 +08:00

144 lines
3.8 KiB
TypeScript

import { http } from "./request";
export type DatabasePoolStats = {
maxOpenConnections: number;
openConnections: number;
inUse: number;
idle: number;
waitCount: number;
waitDurationMs: number;
maxIdleClosed: number;
maxLifetimeClosed: number;
};
export type SystemPerformanceCacheGroup = {
id: string;
label: string;
keys: number;
clearable: boolean;
};
export type SystemPerformance = {
collectedAt: string;
status: "healthy" | "degraded";
host: {
hostname: string;
os: string;
arch: string;
cpuCores: number;
gomaxprocs: number;
processId: number;
uptimeSeconds: number;
goroutines: number;
activeWorkerTasks: number;
loadAverage: [number, number, number];
loadAverageAvailable: boolean;
};
memory: {
systemAvailable: boolean;
totalBytes: number;
usedBytes: number;
availableBytes: number;
usagePercent: number;
heapAllocBytes: number;
heapSysBytes: number;
sysBytes: number;
heapObjects: number;
gcCount: number;
lastGCAt?: string;
};
disk: {
available: boolean;
writable: boolean;
totalBytes: number;
usedBytes: number;
freeBytes: number;
usagePercent: number;
};
database: {
driver: string;
connected: boolean;
latencyMs: number;
databaseBytes?: number;
schema: { current: number; expected: number; ready: boolean };
pool: DatabasePoolStats;
postgres?: {
serverVersion?: string;
databaseBytes?: number;
connections?: number;
maxConnections?: number;
transactions?: number;
rollbacks?: number;
cacheHitRate?: number;
tempFiles?: number;
tempBytes?: number;
deadlocks?: number;
};
};
redis: {
configured: boolean;
connected: boolean;
mode: "redis" | "local";
latencyMs?: number;
version?: string;
uptimeSeconds?: number;
usedMemoryBytes?: number;
peakMemoryBytes?: number;
maxMemoryBytes?: number;
maxMemoryPolicy?: string;
keys?: number;
clients?: number;
blockedClients?: number;
opsPerSecond?: number;
hitRate?: number;
expiredKeys?: number;
evictedKeys?: number;
pool: {
hits: number;
misses: number;
timeouts: number;
totalConnections: number;
idleConnections: number;
staleConnections: number;
pendingRequests: number;
};
cacheGroups: SystemPerformanceCacheGroup[];
statusMessage?: string;
};
agents: SystemPerformanceAgent[];
build: { version: string; commit: string; buildTime: string; goVersion: string };
};
export type SystemPerformanceAgent = {
id: string;
name: string;
mode: "remote" | "embedded";
endpoint: string;
healthy: boolean;
active: number;
limit: number;
queued: number;
configuredLimit: number;
statusMessage?: string;
};
export type RuntimeCacheClearResult = {
scope: "runtime";
deletedKeys: number;
memoryEntries: number;
groups: Array<{ id: string; deletedKeys: number }>;
clearedAt: string;
};
export function getSystemPerformance(signal?: AbortSignal) {
return http.get<SystemPerformance>("/admin/system-performance", { signal });
}
export function updateAgentSessionLimit(maxSessions: number) {
return http.put<SystemPerformanceAgent>("/admin/system-performance/agent-limit", { maxSessions });
}
export function clearRuntimeCache() {
return http.post<RuntimeCacheClearResult>("/admin/system-performance/cache/clear", { scope: "runtime" });
}