MCPcopy Create free account
hub / github.com/QuantumNous/new-api / GetPerformanceStats

Function GetPerformanceStats

controller/performance.go:83–140  ·  view source on GitHub ↗

GetPerformanceStats 获取性能统计信息

(c *gin.Context)

Source from the content-addressed store, hash-verified

81
82// GetPerformanceStats 获取性能统计信息
83func GetPerformanceStats(c *gin.Context) {
84 // 不再每次获取统计都全量扫描磁盘,依赖原子计数器保证性能
85 // 仅在系统启动或显式清理时同步
86 cacheStats := common.GetDiskCacheStats()
87
88 // 获取内存统计
89 var memStats runtime.MemStats
90 runtime.ReadMemStats(&memStats)
91
92 // 获取磁盘缓存目录信息
93 diskCacheInfo := getDiskCacheInfo()
94
95 // 获取配置信息
96 diskConfig := common.GetDiskCacheConfig()
97 monitorConfig := common.GetPerformanceMonitorConfig()
98 config := PerformanceConfig{
99 DiskCacheEnabled: diskConfig.Enabled,
100 DiskCacheThresholdMB: diskConfig.ThresholdMB,
101 DiskCacheMaxSizeMB: diskConfig.MaxSizeMB,
102 DiskCachePath: diskConfig.Path,
103 IsRunningInContainer: common.IsRunningInContainer(),
104 MonitorEnabled: monitorConfig.Enabled,
105 MonitorCPUThreshold: monitorConfig.CPUThreshold,
106 MonitorMemoryThreshold: monitorConfig.MemoryThreshold,
107 MonitorDiskThreshold: monitorConfig.DiskThreshold,
108 }
109
110 // 获取磁盘空间信息
111 // 使用缓存的系统状态,避免频繁调用系统 API
112 systemStatus := common.GetSystemStatus()
113 diskSpaceInfo := common.DiskSpaceInfo{
114 UsedPercent: systemStatus.DiskUsage,
115 }
116 // 如果需要详细信息,可以按需获取,或者扩展 SystemStatus
117 // 这里为了保持接口兼容性,我们仍然调用 GetDiskSpaceInfo,但注意这可能会有性能开销
118 // 考虑到 GetPerformanceStats 是管理接口,频率较低,直接调用是可以接受的
119 // 但为了一致性,我们也可以考虑从 SystemStatus 中获取部分信息
120 diskSpaceInfo = common.GetDiskSpaceInfo()
121
122 stats := PerformanceStats{
123 CacheStats: cacheStats,
124 MemoryStats: MemoryStats{
125 Alloc: memStats.Alloc,
126 TotalAlloc: memStats.TotalAlloc,
127 Sys: memStats.Sys,
128 NumGC: memStats.NumGC,
129 NumGoroutine: runtime.NumGoroutine(),
130 },
131 DiskCacheInfo: diskCacheInfo,
132 DiskSpaceInfo: diskSpaceInfo,
133 Config: config,
134 }
135
136 c.JSON(http.StatusOK, gin.H{
137 "success": true,
138 "data": stats,
139 })
140}

Callers

nothing calls this directly

Calls 7

GetDiskCacheStatsFunction · 0.92
GetDiskCacheConfigFunction · 0.92
IsRunningInContainerFunction · 0.92
GetSystemStatusFunction · 0.92
GetDiskSpaceInfoFunction · 0.92
getDiskCacheInfoFunction · 0.85

Tested by

no test coverage detected