Ilya Grigorik'ten "Yüksek Performanslı Tarayıcı Ağı" kitabı tam olarak buna cevap veriyor. Mobil ağlara adanmış bir bölüm (7.) var. Kitap, yüksek performanslı problemin neredeyse her zaman gecikmeye bağlı olduğunu, genellikle çok fazla bant genişliğine sahip olduğumuzu ancak protokollerin yoluna girdiğini belirtiyor. TCP yavaş başlangıç , Radyo Kaynak Denetleyicisi (RRC) veya düşük kaliteli yapılandırmalar olabilir. Yalnızca mobil ağlarda düşük gecikme yaşıyorsanız, bu şekilde tasarlanır.
Kitapta tipik gecikmeler hakkında bir tablo var:
Tablo 7-2. Aktif bir mobil bağlantı için veri hızları ve gecikme süresi
Nesil | Veri hızı | Gecikme
2G | 100–400 Kbit / s | 300-1000 ms
3G | 0,5–5 Mbit / s | 100–500 ms
4G | 1–50 Mbit / s | <100 ms
Gecikmeyle çok alakalı olmasına rağmen, üç karakterli TCP özelliği el sıkışması veya yavaş başlatma, kablolu bağlantıları eşit olarak etkiledikleri için soruyu gerçekten yanıtlamıyor. Mobil ağlardaki gecikmeyi gerçekten etkileyen şey IP altındaki katmandır. IP altındaki katmanın yarım saniyelik gecikme süresi varsa, bir sunucuyla yapılan TCP bağlantısının ~ 1,5 sn (0,5 sn * 3) alacağını, sayıları oldukça hızlı topladığını görürsünüz. Daha önce söylediğim gibi bu cep boşta olmadığını farz ediyorum. Ahize boştaysa, önce ağa "bağlanması" gerekir; bu, kule ile kaynakların (basitleştirilmiş) rezervinin pazarlık edilmesini gerektirir ve bu, LTE'de 50-100 ms arasında, 3G'de birkaç saniyeye kadar sürebilir ve daha fazlası önceki ağlarda.
Şekil 7-12. LTE istek akışı gecikmeleri
- Kontrol düzlemi gecikmesi: RRC anlaşması ve durum geçişleri için bir kerelik gecikme maliyeti oluştu: boşta etkin olmak için <100 ms ve etkin durumda olmak için <50 ms.
- Kullanıcı düzlemi gecikmesi: Cihazla radyo kulesi arasında aktarılan her uygulama paketi için sabit maliyet: <5 ms.
- Çekirdek ağ gecikmesi: Paketi radyo kulesinden paket ağ geçidine taşımak için taşıyıcıya bağlı maliyet: pratikte, 30-100 ms.
- İnternet yönlendirme gecikmesi: Taşıyıcının paket ağ geçidi ve genel İnternet üzerindeki hedef adres arasındaki değişken gecikme maliyeti.
Uygulamada, birçok konuşlandırılmış 4G ağının uçtan uca gecikmesi, cihaz bağlı bir durumda olduğunda 30-100 ms aralığında olma eğilimindedir.
Dolayısıyla, bir isteğiniz var (Şekil 8-2. "Basit" bir HTTP isteğinin bileşenleri):
- RRC anlaşması 50-2500 ms
- DNS araması 1 RTT
- TCP el sıkışma 1 RTT (önceden var olan bağlantı) veya 3 RTT (yeni bağlantı)
- TLS anlaşması 1-2 RTT
- HTTP isteği 1-n RTT'ler
Ve gerçek verilerle:
Tablo 8-1. Tek bir HTTP isteğinin gecikme yükü
| 3G | 4G
Kontrol uçağı | 200-2.500 ms | 50–100 ms
DNS araması | 200 ms | 100 ms
TCP anlaşması | 200 ms | 100 ms
TLS el sıkışma | 200–400 ms | 100–200 ms
HTTP isteği | 200 ms | 100 ms
Toplam gecikme ek yükü | 200–3500 ms | 100–600 ms
Buna ek olarak, bir mobil ağda orta derecede Tamam yapmak istediğiniz etkileşimli bir uygulamanız varsa, Nagle algoritmasını devre dışı bırakmayı deneyebilirsiniz (çekirdek birden çok küçük paket göndermek yerine verilerin daha büyük paketlerle birleşmesini bekler) test etmenin yollarını arar. içinde https://stackoverflow.com/a/17843292/869019 .
Velocity Konferansı'nın sponsorluğunda https://hpbn.co/ adresinde tüm kitabı ücretsiz olarak okuyabilirsiniz . Bu, son derece önerilen bir kitaptır, yalnızca web sitesi geliştiren insanlar için değil, bazı ağlar üzerinden bir müşteriye bayt servisi yapan herkes için de yararlıdır.