Yanıtlar:
Güncellenen Cevap
Kısa cevap : evet, ama pahalı.
Uzun cevap :
Bu soru, WebSockets'e özgü değildir, çünkü WebSocket'ler temelde HTTP benzeri bir el sıkışma ve mesajlar için minimum çerçeveye sahip uzun ömürlü TCP soketleridir.
Gerçek soru şudur: tek bir sunucu aynı anda 1.000.000 soket bağlantısını kaldırabilir mi ve bu hangi sunucu kaynaklarını tüketir? Cevap birkaç faktör nedeniyle karmaşıktır, ancak uygun boyutta bir sistem (çok sayıda CPU, RAM ve hızlı ağ) ve ayarlanmış bir sunucu sistemi ve optimize edilmiş sunucu yazılımı için aynı anda 1.000.000 aktif soket bağlantısı mümkündür.
Bağlantıların sayısı birincil sorun değildir (bu çoğunlukla yalnızca çekirdek ayarlama ve yeterli bellek sorunudur), bu bağlantıların her birine veri göndermek / almaktır. Gelen bağlantılar uzun bir süreye yayılmışsa ve çoğunlukla boşta kalıyorlarsa veya nadiren küçük statik veri yığınları gönderiyorlarsa, muhtemelen 1.000.000 eşzamanlı bağlantıdan bile çok daha fazlasını elde edebilirsiniz. Bununla birlikte, bu koşullar altında bile (çoğunlukla boşta olan yavaş bağlantılar), çok sayıda bağlantıyı idare etmek için yapılandırılmamış ve tasarlanmamış ağlar, sunucu sistemleri ve sunucu kitaplıkları ile yine de sorunlarla karşılaşacaksınız.
Alessandro Alinone'nin 500.000 bağlantı için yaklaşık kaynak kullanımı hakkındaki yanıtına bakın.
Sunucunuzu nasıl yapılandıracağınızı ve sunucu yazılımınızı çok sayıda bağlantıyı destekleyecek şekilde nasıl yazacağınızı okumak için bazı eski ama yine de uygulanabilir kaynaklar:
Günümüz sistemlerinde 1 milyon eşzamanlı TCP bağlantısının işlenmesi bir sorun değildir.
Bunu kendi testlerimize dayanarak onaylayabilirim (tam açıklama: Lightstreamer'da CTO'yum).
Bazı müşterilerimize, tek bir kutuda 1 milyon bağlantıya ulaşılabileceğini (ve mutlaka bir süper canavar makinesi değil) birkaç kez göstermemiz gerekti. Ancak 500 bin eşzamanlı bağlantıyı test ettiğimiz yapılandırmayı özetlememe izin verin, çünkü bu Amazon EC2'de gerçekleştirilen çok daha yeni bir testtir.
Lightstreamer Server'ı (diğer şeylerin yanı sıra bir WebSocket sunucusu olan) m2.4xlarge örneğine kurduk. Bu, 8 çekirdek ve 68,4 GiB bellek anlamına gelir.
Lightstreamer Sunucusuna 500.000 eşzamanlı bağlantı oluşturmak için 11 istemci makine başlattık. Test, sunucudan toplam giden aktarım hızı 90.000 güncelleme / sn olacak şekilde yapılandırıldı ve bu da 450 Mbit / sn'lik giden bant genişliğinde zirvelere neden oldu.
Sunucu hiçbir zaman 13 GiB'den fazla RAM kullanmadı ve CPU% 60 civarında stabildi.
En az 30 GiB RAM ile 1 milyon eşzamanlı soketi işleyebilirsiniz. İhtiyaç duyulan CPU, ihtiyacınız olan veri çıkışına bağlıdır.