Relay’i inşa etme nedenimiz, Go ile yazılmış bir WebSocket sunucusunun, PHP üzerinde çalışan bir sunucudan daha verimli bir şekilde gerçek dünya bağlantı yüklerini yönetip yönetemeyeceğini test etmekti. Bu sorunun cevabını öğrenmek için gerçek bir benchmark çalıştırdık. İşte tam olarak ne yaptığımız, ne bulduğumuz ve bunun ne anlama geldiği.
Test Kurulumu
Test Kurulumu
- Benchmark koşucusu: Hetzner CAX11 (4GB RAM, ARM64, Ubuntu 24.04)
- Relay sunucusu: Hetzner CX23 — ayrı bir makine, ağ üzerinden test edildi
- Reverb sunucusu: Benchmark kutusunda yerel olarak çalışıyor (loopback — Reverb için bir avantaj)
- Yük test aracı: k6 v0.55.0
- Test: 5 dakika boyunca 0’dan 1,000 eşzamanlı WebSocket bağlantısına ramp, 1,000’de 60 saniye tutuldu
1,000 Eşzamanlı Bağlantıda Sonuçlar
1,000 Eşzamanlı Bağlantıda Sonuçlar
| Metric | Relay (Go) | Laravel Reverb (PHP) |
|---|---|---|
| İşlem hafızası | ~38 MB | ~63 MB |
| En yüksek CPU | ~18% | ~95% |
| Sunucu yük ortalaması | 0.62 | 2.95 |
| Toplam sunucu RAM’i | 700 MB | 962 MB |
Sayıların Anlamı
Sayıların Anlamı
Reverb %95 CPU kullandı. Relay %18 CPU kullandı. Bu, Reverb’in $5’lık bir sunucuda 1,000 bağlantıda tavanına yaklaştığı anlamına geliyor. Relay ise henüz ısınmaya bile başlamadı.
Üretim ortamında önemli olan fark, başlıca kaynak yönetimidir. Trafik yoğunlaştığında, Relay bunu absorbe ederken, Reverb bağlantıları düşürmeye başlar.
Go’nun goroutine modeli bunun sebebidir. Relay’deki her WebSocket bağlantısı bir goroutine tarafından yönetilir — hafif, planlaması ucuz ve bağımsız bir yönetim sağlar. PHP’nin event loop’u çalışır, ancak bağlantı başına daha yüksek bir maliyet öder.
Dürüst Uyarı
Dürüst Uyarı
Reverb loopback üzerinde çalışırken, Relay ağ üzerinden çalıştı; bu Reverb için bir gecikme avantajı sağladı. Buna rağmen, Relay her kaynak metriğinde önde çıktı.
Reverb, birinci taraf Laravel desteği ile iyi inşa edilmiş bir üründür. Eğer saf bir Laravel monolit çalıştırıyorsanız ve WebSocket sunucunuzda Taylor Otwell’in adını arıyorsanız, Reverb sağlam bir tercihtir.
Ne Zaman Relay’i Seçmelisiniz
Ne Zaman Relay’i Seçmelisiniz
- Polyglot stack (Next.js, Rails, Django, Node — sadece Laravel değil)
- Satıcı bağımlılığı olmadan yönetilen bir bulut seçeneği istiyorsanız
- Dashboard’unuzda bir canlı Kanal Denetleyicisi istiyorsanız
- Kendi kendine barındırılacak bir çözüm arıyorsanız, yönetilen barındırmaya istisnasız taşınabilirsiniz
- Ölçeklendirilmiş daha iyi kaynak verimliliği
Deneyin
Deneyin
Relay, açık kaynak (MIT) ve sonsuza dek kendiniz barındırmak için ücretsizdir:
👉 github.com/DarkNautica/Relay
Relay Cloud, isteğe bağlı yönetilen bir katmandır ve ücretsiz bir hobi planı sunar:
👉 relaycloud.dev
Laravel paketi:
composer require darknautica/relay-cloud-laravel
Orijinal olarak yayımlandı: relaycloud.dev/blog/relay-vs-reverb-benchmark
Kaynak: Orijinal Makale


