Ответ
Для расчета нагрузки на сервер можно использовать метрики:
- CPU:
runtime.NumCPU()иruntime.GOMAXPROCS()для понимания доступных ядер. - Память:
runtime.MemStats(Alloc, Sys, HeapInuse). - Goroutines:
runtime.NumGoroutine()для мониторинга количества горутин.
Пример сбора метрик:
var m runtime.MemStats
runtime.ReadMemStats(&m)
fmt.Printf("CPU: %d/%dnGoroutines: %dnMemory: %v MBn",
runtime.GOMAXPROCS(0), runtime.NumCPU(),
runtime.NumGoroutine(), m.Alloc/1024/1024)
Инструменты:
pprofдля профилирования CPU/memory.expvarдля экспорта метрик в реальном времени.- Prometheus + Grafana для визуализации.
Оптимизация:
- Лимитирование горутин (например, через
semaphore). - Балансировка нагрузки (round-robin, least connections).