Yavaş İnternet Bağlantısı Benzetimi


188

Bunun garip bir soru olduğunu biliyorum. Ben genellikle tüm kullanıcıların yavaş bir internet bağlantısı olduğu "varsayım" dayalı uygulamalar geliştirmek. Ancak, programlı bir şekilde yavaş bir internet bağlantısını simüle etmenin bir yolu olduğunu düşünen var mı, böylece bir uygulamanın çeşitli "bağlantı hızları" altında nasıl performans gösterdiğini "görebiliyorum"?

Hangi dilin kullanıldığı konusunda endişelenmiyorum. Kod örnekleri ya da başka bir şey aramıyorum, sadece arkasındaki mantıkla ilgileniyorum.

Yanıtlar:


109

Pencereleri çalıştırıyorsanız, kemancı harika bir araçtır. Modem hızını simüle etme ayarı vardır ve daha fazla kontrol isteyen biri için her bir isteğe gecikme ekleyecek bir eklentisi vardır .

Uygulamamda gecikme kodunu koymak için böyle bir araç kullanmayı tercih ediyorum, çünkü çok daha gerçekçi bir simülasyon olduğu gibi, gerçek bitleri tasarlamamı veya kodlamamam. En iyi kod yazmak zorunda değilim kodudur.

EKLENDİ : Pavel Donchev'in Software Technologies blogunda yer alan bu makale, özel simüle edilmiş hızların nasıl oluşturulacağını gösteriyor: Fiddler ile İnternet bağlantı hızınızı sınırlama .


6
Merhaba Yararlı olabilecek yavaş bir internet bağlantısını simüle etmek için küçük bir rehber yazdım: developertipoftheday.com/2010/12/… - tam açıklama - bu benim kendi blogum, ancak yayılmaya yardımcı olduğum için iyi kelime kemancı :-)
Alex KeySmith

Bu kemancı yaklaşımı ile ilgili sorun, gecikme simülasyonunun doğru olmaması, yanlış protokol seviyesinde çalışmasıdır, böylece yavaş başlatmayı doğru bir şekilde simüle edemezsiniz.
Sam Saffron

@SamSaffron, Böyle eski bir yazı kazdığımız için üzgünüm, ama yavaş başlangıçların simülasyonuna yardımcı olan başka araçlar biliyor musunuz?
Anish Ramaswamy

@AnishRam iyi bahis dummynet / ipfw kullanmak olduğunu bsd ve aile, freebsd ile gemi osx vb barkingiguana.com/2009/12/04/...
Sam Safran

@AnishRam Ayrıca netem bkz linuxfoundation.org/collaborate/workgroups/networking/netem iproute2 kullanarak koşulların bir demet simüle edebilirsiniz.
Philip Rieck

154

Chrome 38'den başlayarak bunu herhangi bir eklenti olmadan yapabilirsiniz. İnceleme öğesini (veya F12kısayol tuşunu) tıklayın, ardından "cihaz modunu değiştir" i tıklayın resim açıklamasını buraya girinve şöyle bir şey göreceksiniz:

resim açıklamasını buraya girin

Diğer birçok özellik arasında, belirli internet bağlantısını (3G, GPRS) simüle etmenizi sağlar

Yükleme hızını sınırlamaya çalışan kişiler için PS . Ne yazık ki şu anda mümkün değil.

PS2 şimdi hiçbir şeye geçmenize gerek yok. Kısma paneline doğrudan ağ panelinden ulaşılabilir.resim açıklamasını buraya girin

Kısma yok'u tıklatırken özel kısma seçeneklerinizi oluşturabileceğinizi unutmayın.

resim açıklamasını buraya girin


2
Artık Chrome Dev Tools kısıtlama hem indirme hem de yükleme hızını sınırlıyor. Ancak bunu yalnızca Chrome'daki geçerli sayfa için sınırlandırdığından, sayfanızı diğer tarayıcılarda test etmek için kullanamazsınız. Bunu yapmak için Fiddler gibi diğer araçları kullanmanız gerekir.
Leonid Vasilev

3
Şu anda WebSockets'in şu şekilde kısılmadığını
mseddon

Yükleme azaltma, en yeni (70.0) dahil Chrome'un birkaç sürümünde çalışmadı. İzleyicide bir hata raporu var .
Matt

Deneyimlerime göre, web yavaşlamasının en büyük nedeni kablo ISP'lerinin kesintili DNS'sinin reklam sunucularını veya CDN'leri çözememesidir. Bazen, bunları çözme girişimi başarılı olana veya zaman aşımına uğrayana kadar sayfanın tamamı boş kalır. Chrome bunu simüle edebilir mi?
StackOverthrow

45

Google şunları önerir :


1
Ağ Bağlantı Kremi Apple tarafından korunur (bu nedenle kararlı ve güvenilirdir), ancak sadece Xcode'un simülatörü için geçerlidir.
Ben Wheeler

4
@BenWheeler Son zamanlarda bunu kesinlikle sistem geniş, hatta localhost uygulandı
aromero

2
Ağ Bağlantısı Düzenleyicisinin gerçekten tüm ağ yığınına uygulandığını doğrulayabilirim.
Fred Vollmer

14

Linux makinelerinde şunları kullanabilirsiniz: wondershaper

apt-get install wondershaper

$ sudo wondershaper {interface} {down} {up}

{down} ve {up} kpbs cinsinden bant genişliği

Örneğin, eth1 arabiriminin bant genişliğini 256kbps yukarı bağlantı ve 128kbps aşağı bağlantı ile sınırlamak istiyorsanız,

$ sudo wondershaper eth1 256 128

Sınırı temizlemek için,

$ sudo wondershaper clear eth1 

13

Http://www.netlimiter.com/ kullanıyordum ve çok iyi çalışıyor. Tek işlemler için hızı sınırlamakla kalmaz, aynı zamanda gerçek aktarım hızlarını da gösterir.


Diğer araçların çoğu, iyi bir şey olan netlimiter ile durum gibi görünmeyen yapay gecikme yoluyla bant genişliği kontrolü sağlar. Ancak, sonunda ticari bir araçtır (deneme sürümüyle) ve yalnızca Windows altında kullanılabilir.
Aleksander Stelmaczonek

6

Yavaş bağlantıları simüle etmek için bant genişliği şekillendirme yapan iprelay ve Sloppy gibi TCP proxy'leri var. Ayrıca bant genişliği şekillendirme yapabilir ve ipfw ve iptables gibi IP filtreleme araçlarını kullanarak paket kaybını simüle edebilirsiniz.


Teşekkür ederim, iprelay ve Sloppy joe'a bir göz atacağım.

Teşekkürler, ipfw harika çalışıyor. İşte size yardımcı olduğunu gördüğüm kısa bir kılavuz: barkingiguana.com/2009/12/04/…
Eric Nguyen

4

Dummynet'i deneyebilirsiniz , kuyruk ve bant genişliği sınırlamalarını, gecikmeleri, paket kayıplarını ve çok yollu efektleri taklit edebilir


4

Charles veya Fiddler gibi azaltma özelliklerine sahip bir web hata ayıklama proxy'si kullanın .

Genel olarak yararlı web geliştirme bulacaksınız. En büyük fark, Charles'ın shareware olması, Fiddler'ın ise ücretsiz olmasıdır.


Proxy olarak çalıştırıyorsunuz. Tarayıcı otomatik olarak ona bağlanır ve istekleri web uygulamanıza iletir.
Ben M

Fiddler için, tarayıcının içinde / dışında çalışmak için her iki mod da vardır.
Ken D

4

Ayrıca, bazı * nix'lerde yavaş bir bağlantıyı simüle etmek için ipfw kullanmayı deneyebilirsiniz . Bu Quora sorusu üzerine Ben Newman'ın cevabı hakkında daha fazla bilgi verilmektedir


2

TCPMon gibi bir araç kullanın . Yavaş bir bağlantı yapabilir.

Temel olarak, aynı şeyi talep edersiniz ve aynı isteği gerçek sunucuya iletir ve ardından yanıtı yalnızca ayarlanan bayt miktarı ile geciktirir.


2

Sen kullanabilirsiniz NetEm (Ağ Emülasyon) bir şekilde birçok ağ özelliklerini taklit proxy sunucusu (hız, gecikme, paket kaybı, vs.). IProute2 paketini kullanarak ağı kontrol eder ve çoğu Linux dağıtımının çekirdeğinde etkinleştirilir.

tcKomut satırı uygulaması ( iproute2 paketinden) tarafından kontrol edilir , ancak NetEm için bazı web arayüzü GUI'leri vardır, örneğin PHPnetemGUI2 .

Avantajı, yazdığım gibi, sadece farklı ağ hızlarını değil, aynı zamanda örneğin paket kaybı, çoğaltma ve / veya bozulma, rastgele veya tanımlanmış gecikme, vb. De taklit edebilir, böylece kötü performans gösteren çeşitli ağları taklit edebilirsiniz.

Uygulamanız için kesinlikle şeffaftır, işletim sistemini NetEm proxy sunucusunu kullanacak şekilde yapılandırabilirsiniz, böylece bu makineden gelen tüm bağlantılar NetEm'den geçer. Veya yalnızca uygulamanızı proxy olarak kullanacak şekilde yapılandırabilirsiniz.

Bir Android uygulamasının performansını çeşitli taklit edilmiş düşük performanslı ağlarda test etmek için kullanıyorum.


1

Mac OSX 10.10'dan beri , pf için GUI, ipfw'nin yerini alan bir GUI işlevi gören Murus Güvenlik Duvarı adlı bir uygulamaya sahiptir .

Sistem çapında veya alana özgü azaltma için çok iyi çalışır. Bir akış video oynatıcının nasıl ayarlandığını test etmek için indirme hızımı 300Kbps ile 30Mbps arasında kaydırmak için kullanabildim.


0

WIPFW adında başka bir araç daha var - http://wipfw.sourceforge.net/

Biraz eski bir okul, ancak daha yavaş bir bağlantı simüle etmek için kullanabilirsiniz. Windows tabanlı ve araç, yöneticinin yönlendiricinin belirli bir makineden ne kadar trafik aldığını veya ne kadar WWW trafiğini yönlendirdiğini izlemesine izin veriyor.


0

Aradığım cevaptan bahsedildiği için bunu (9 yıl sonra soruldu) güncelleyerek:

Firefox ayrıca bağlantı hızlarını daraltmak için ön ayarlara sahiptir. Bunları geliştirici araçlarının Ağ İzleyicisi sekmesinde bulabilirsiniz. Varsayılan 'Kısma yok'.

En yavaş GPRS ( İndirme hızı: 50 Kbps, Yükleme hızı: 20 Kbps, Minimum gecikme (ms): 500 ), DSL ve WiFi'ye 'iyi' ve 'normal' 2G, 3G ve 4G arasında değişir ( İndirme hızı: 30Mbps, Yükleme) hız: 15Mbps, Minimum gecikme süresi (ms): 2 ).

Dev Tools belgelerinde daha fazlası .


0

Linux için aşağıdaki kağıtlar listesi yararlı olabilir:

Şahsen, Dummynet iyi olsa da, NetEm'i kullanım durumlarım için en çok yönlü olarak görüyorum ; Genellikle, gecikme etkisi oldukça bant genişliği daha (yani WiFi bağlantısı sorunlarını) ilgilenen kulüpler ve (Aynı zamanda çok erişilebilir ve ücretsiz vb rastgele paket kaybı / yolsuzluğu taklit süper kolay donanım tabanlı aksine Linktropy ).

Bir yan notta, Windows için Clumsy harika. Ayrıca (web siteleri ile ilgili) tarayıcı daraltma gerçek hayat ağ sorunları taklit etmek için doğru bir yöntem olmadığını eklemek istiyorum (Bence "TKK" yukarıdaki nedenlerden bir kaç yorum yaptı).

Umarım bu birine yardımcı olur!


0

Tek bir TCP bağlantısını şekillendirmenin yaygın bir örneği, aslında aşağıdaki gibi çift çiftlerden socatve cpipeUNIX tarzında birleştirilebilir:

socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'

Bu yaklaşık 300KB / s bant genişliğine sahip bir bağlantı taklit gelen adresinden hizmet :5000ve karşı yaklaşık olarak 10KB / s ve üzerinde dinler :5555gelen bağlantılar için. Uyarı : Bu bağlantı başına , her bir TCP bağlantısının bu miktarı alacağını unutmayın.

Açıklama: Dış (sol) socat, verilen seçenekler :5555çatal sunucu olarak dinler . Seçenekteki ilk cpipekomut SYSTEM:...daha sonra sokete giren verileri socatkısar : 5555 (ve ilk, dıştan çıkar ) en fazla 10kByte / s'ye. Bu veriler daha sonra socatbağlanan başka bir veri kullanılarak iletilir localhost:5000(yavaşlamak istediğiniz servisin dinlenmesi gerekir). Daha sonra gelen veriler localhost:5000sağ cpipekomuta konur (verilen değerlerle) yaklaşık 300kB / s'ye kısar.

Seçenek -ngriçin cpipeönemlidir. Cpipe'ın girdi dosya tanımlayıcısından açgözlü olmayan bir şekilde okumasına neden olur. Aksi takdirde, arabelleklerdeki veriler iletilmez ve yanıt beklenir.

bufferBunun yerine daha yaygın bir aracın kullanılması da cpipemümkündür.

(Kredi: Bu, Christophe Loor'un socatdokümantasyondaki "çift tişört" tarifine dayanmaktadır )

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.