Merhaba! Ben Aykhan, 1999 doğumlu bir Azerbaycanlıyım ve 2017 yılından bu yana programlamayla ilgileniyorum. Teknolojinin büyülü dünyası beni her zaman etkilemiştir ve bu merakımı kendi blogumda paylaşarak daha geniş bir kitleyle buluşturmayı amaçlıyorum.
"Go Fiber ile 100.000 İstek / Saniye: Nasıl Mümkün?"
Go dili son yıllarda performans canavarı web framework’leriyle dikkat çekiyor. Ama bu alevin en harlı yandığı yer Fiber.
Fiber öyle bir kütüphane ki, aynı donanımda Node.js veya Laravel’in 5–10 katı istek işleyebiliyor.
Peki bu nasıl oluyor? Sihir mi var? Yoksa iyi yazılmış düşük seviye bir mimari mi?
Hadi birlikte bakalım.
⚙️ Fiber’in Temeli: fasthttp Motoru
Fiber aslında kendi başına bir web sunucusu değil — arkasında fasthttp adında, Go’nun standard net/http paketinden bile hızlı bir HTTP engine yatıyor.
fasthttp’nin farkı:
-
Zero-Copy Request/Response: Gereksiz bellek kopyalamaları yapılmaz.
-
Memory Pooling: Request objeleri yeniden kullanılır.
-
Lock-Free Design: Minimum mutex kullanımı, maksimum concurrency.
Yani Fiber’in yaptığı şey şu:
“Benim altımda Ferrari motoru var, üstüne sade ama kullanışlı bir şasi koydum.”
Sonuç: hem hızlı hem ergonomik bir framework.
🧪 Basit Bir Benchmark Testi
Bir test yapalım.
main.go dosyasını aç ve şu kodu yaz:
package main
import (
"github.com/gofiber/fiber/v2"
)
func main() {
app := fiber.New()
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, Fiber!")
})
app.Listen(":3000")
}
Şimdi terminalde projenin olduğu dizine git ve şu komutu patlat:
wrk -t12 -c400 -d30s http://localhost:3000/
Bu, 12 thread, 400 connection ve 30 saniyelik stres testi yapar.
Ortalama sonuç:
Requests/sec: 102,000
Bu sayı aynı makinede Express.js için genellikle 15–20 bin civarındadır.
Laravel (PHP-FPM) tarafında ise 2–3 bin civarında kalır.
🧬 Neden Bu Kadar Hızlı?
1. Go’nun Goroutine Modeli
Go, her request için thread açmaz; goroutine kullanır.
Bu mikro-thread’ler hafif, hızlı ve aynı anda milyonlarcası çalışabilir.
2. Garbage Collector Optimizasyonu
Go 1.20+ sürümlerinde GC çok gelişti. Fiber bunu mükemmel kullanıyor.
Ölü objeler minimal CPU harcamasıyla temizleniyor.
3. fasthttp’nin “Keep-Alive” Verimliliği
TCP bağlantısını kapatmadan yeniden kullanır.
Bu, network tarafında ciddi hız kazandırır.
4. Middleware Mimarisinin Hafifliği
Express’te middleware zinciri ağırdır. Fiber’de ise middleware stack oldukça hafiftir.
Her request, “middleware işkencesi” çekmeden doğrudan rotaya gider.
📈 Gerçek Hayattan Bir Örnek
Bir SaaS projesinde 6 CPU çekirdekli VPS üzerinde test ettim.
Fiber tabanlı API ortalama 95.000–110.000 RPS (request per second) arası işlem yaptı.
Aynı yapı Node.js (Express) ile denendiğinde 17.000 RPS’ye düştü.
| Framework | Ortalama İstek/Saniye | CPU Kullanımı |
|---|---|---|
| Go Fiber | 100.000+ | 65% |
| Node Express | 17.000 | 90% |
| Laravel (PHP-FPM) | 2.800 | 95% |
🧩 Performansı Artırmak İçin Ek Tüyolar
-
app.Server().MaxConnsPerIP = 0ile limitsiz bağlantı sağla. -
prefork: trueayarı ile tüm CPU’ları kullan. -
gzipveyabrotlimiddleware’lerini test etmeden aktifleştirme, bazen CPU’yu yer. -
Static dosyaları Nginx’ten serve et, Fiber’e sadece API bırak.
-
Eğer JSON çok dönüyorsan,
fiber.Config{ JSONEncoder: json.Marshal, JSONDecoder: json.Unmarshal }ayarını yap.
💬 Fiber Gerçekten Roket mi?
Evet, Fiber tam anlamıyla Go dünyasının Express.js’i ama turbo versiyonu.
Minimal syntax, inanılmaz hız, düşük RAM tüketimi ve concurrency performansıyla şu an backend için en mantıklı Go framework’lerinden biri.
🚀 “Go Fiber, hız istiyorsan düşünmeden kullan.”
Ama unutma — hızlı framework, kötü yazılmış kodu kurtarmaz.
Doğru mimari + Fiber birleşirse işte o zaman 100.000 istek / saniye mümkün.
#golang #fiber #fastapi #performance #benchmark #webframework #backend #highload #fasthttp #100krequests