Ответ
На последнем проекте RPS (Requests Per Second) составлял около 5K.
Как измеряли:
Использовали net/http/pprof и нагрузочное тестирование через vegeta:
import (
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
http.ListenAndServe(":6060", nil) // pprof
}()
// ...основной сервер
}
Оптимизации:
- Кеширование через
sync.Poolдля частых аллокаций - Оптимизация JSON-маршалинга (
jsoniter) - Балансировка через nginx
Пиковый RPS достигал 8K, но держали запас в 30%.