Yanlışlıkla dahili AB testimin sunucumun saniyede 3k vuruşla 1k eşzamanlılık işleyebileceği anlamına geldiğini varsaydım.
Şu anda benim teorim, ağın darboğaz olduğu. Sunucu yeterince hızlı veri gönderemiyor.
1k eşzamanlılıktaki blitz.io'dan yapılan harici testler, isabetlerimin 180 saniyede kapandığını gösteriyor, sayfalar yanıt vermenin daha uzun ve daha uzun sürdüğü için sunucu yalnızca saniyede 180 geri dönebiliyor.
Ben nginx boş bir dosya hizmet ettik ve tezgah ben: eşzamanlılık ile 1: 1 ölçekler.
Şimdi IO / memcached darboğazlarını (nginx normalde memcached'den çeker) ekarte etmek için, dosya sisteminden önbelleğe alınan sayfanın statik bir sürümünü sunuyorum.
Sonuçlar orijinal testime çok benziyor; Yaklaşık 180 RPS ile sınırlandım.
HTML sayfasını ikiye bölmek bana RPS'nin iki katını veriyor, bu yüzden kesinlikle sayfanın boyutu ile sınırlı.
Ben yerel sunucudan ApacheBench içersem, yüksek aktarım hızlarında Tam Sayfa ve Yarım Sayfada yaklaşık 4 K RPS tutarlı sonuçlar elde ediyorum. Transfer hızı: 62586.14 [Kbytes / sn] alındı
I harici bir sunucudan AB, yaklaşık 180RPS olsun - blitz.io sonuçları ile aynı.
Bunun kasıtlı azaltma olmadığını nasıl bilebilirim?
Birden fazla harici sunucudan karşılaştırma yaparsam, tüm sonuçlar kötü olur, bu da sorunun benim sunucularım / blitz.io ile indirme hızı sorunu değil, MY sunucuları giden trafiğinde olduğuna inanmamı sağlar.
Sonuç olarak sunucumun yeterince hızlı veri gönderemeyeceği sonucuna geri döndüm.
Haklı mıyım? Bu verileri yorumlamanın başka yolları var mı? Her biri saniyede 180 isabet alabilecek birden fazla sunucu + yük dengeleme kurmak için çözüm / optimizasyon var mı?
Sunucu optimizasyonu konusunda oldukça yeniyim, bu nedenle bu verileri yorumlayan herhangi bir onay için teşekkür ederim.
Giden trafik
Giden bant genişliği hakkında daha fazla bilgi: Ağ grafiği maksimum 16 Mb / s çıkış gösterir: saniyede 16 megabit. Hiç kulağa pek hoş gelmiyor.
Kısma ile ilgili bir öneri nedeniyle, buna baktım ve linod'un 50mbps'lik bir kapağa sahip olduğunu gördüm (ki görünüşe göre vurmaya bile yakın değilim). 100 mbps'ye çıkarttım.
Linode trafiğimi kapattığından ve hatta vurmadığımdan, sunucumun 100mbps'ye kadar çıkabilmesi gerektiği anlamına geliyor, ancak başka bir dahili darboğaz ile sınırlı mı? Bu büyüklükteki ağların nasıl çalıştığını anlamıyorum; HDD'den okuyabilecekleri kadar hızlı veri gönderebilirler mi? Ağ borusu bu kadar büyük mü?
Sonuç olarak
1: Yukarıdakilere dayanarak, LB'nin arkasındaki sunucu başına tam olarak 180RPS'de çok nginx sunucu kurulumunun üstüne bir nginx yük dengeleyici ekleyerek kesinlikle 180RPS'imi yükseltebileceğimi düşünüyorum.
2: Linode hiç vurmadığım bir 50 / 100mbit sınırına sahipse, tek sunucu kurulumumla bu sınıra ulaşmak için yapabileceğim bir şey olmalı. Verileri yerel olarak yeterince hızlı okuyabilir / aktarabilir ve hatta linode 50mbit / 100mbit kapağa sahip olsa bile rahatsız edersem, nasıl tespit edeceğimden emin olmadığım bu başlıkları vurmama izin vermeyen bir iç darboğaz olmalı. Doğru?
Sorunun şimdi çok büyük ve belirsiz olduğunu anlıyorum, ama nasıl yoğunlaşacağından emin değilim. Herhangi bir girdi yaptığım herhangi bir sonuç için takdir edilmektedir.