Soru Neden bir geri besleme arabiriminde döngüden daha az gecikme var?


Yığın Taşımı Kariyer böyle bir şey servis edilir:

user -> internet -> our fw -> nginx -> haproxy -> web farm
  • FreeBSD, kullanımdaki işletim sistemidir
  • Bu kutuda güvenlik duvarı yok veya QoS yok
  • nginx SSL sonlandırmamızın üstesinden geliyor
  • haproxy yük dengeleme işlemlerini gerçekleştirir
  • nginx / haproxy her yoldan yaklaşık 15 Mb / sn hız yapıyor

Normal işlem sırasında, nginx HTTP isteğini alır, kendi isteğini yapar ve isteği, aynı kutudaki geri döngü adresine (127.0.0.1) bağlı olan bir haproxy örneğine gönderir.

Geçen gün bazı sorun giderme işlemleri yapmak için, haproxy örneğini nginx'in çalıştığı aynı arabirime taşıdım. Bu hemen tüm isteklere 100ms gecikme ekledi. Bu arayüz gerçek bir fiziksel arayüz değil, sazan arayüzü.

Bana bunun neden böyle olduğunu açıklayabilir mi? Paket kuyruğu ile devam edebilir mi? Ya da belki geridöngü her zaman daha hızlıdır, çünkü 'yumuşak' mıdır? Burada eksik olduğum temel bir şey var ve birilerinin beni eğiteceğini umuyorum.


8
2017-07-23 15:16


Menşei


İster bir isterse bir e {th, n} bağlantı noktasıyla adreslenmiş olsun, bir kutuya gönderilen bir paket, Linux'ta hiçbir zaman donanımlara vurmaz. Yine de BSD ile ilgili olarak otoriter olarak konuşamıyorum. - BMDan
Aynı arayüze geçtiğinizden emin misiniz? Hanproxy'yi geridönüşüme geçirdiğinizde 100 ms geride kaldı mı? - tomjedrz
@tomjedrz - evet. geri döndüğümde, gecikme gitti. - Michael Gorsuch


Cevaplar:


Sabit bir 100 ms gecikme tuhaf görünüyor. Paketlerin arabelleğe alınmasına ve hemen teslim edilmemesine benziyor. Ya da belki bir kısmı bırakılır ve yeniden iletilir. Bu konuda tcpdump çalıştırabilir misin problemi göstermek için arayüz? IP yığınının FreeBSD'de nasıl çalıştığını ve CARP'in nasıl uygulandığını bilmiyorum, ancak örneğin kölenin MAC adresini, arızalı ARP'lerle düzenli olarak tanıtabileceği ve üstadın alternatif olarak paketleri her iki tarafa da gönderebileceği mümkün mü?

Hiçbir şey yayılmayacağından emin olmak için gerçek arayüzde tcpdump'ı çalıştırabilir misiniz?

Sistemin bir CARP cihazının ARP girişini önbelleğe alması ve böylece bir seansın her paketi için bir ARP talebinin yayınlanmasına izin verilmemesi mümkün mü?

Bunların çoğu aptalca fikirler, ama doğru yönde arama yapmanıza yardımcı olmak için.


2
2017-07-24 06:04



Fikirlerin için teşekkürler, Willy. Yapılandırmayı arabirim dışı saatlere geri alıyorum ve bir paket izinin neye dönüştüğünü görüyorum. - Michael Gorsuch


Sadece açıklık için, sadece 127 adresinden yerel IP'ye nasıl erişildiğini değiştirdiniz; doğru?

Eğer durum buysa ve bir fark yaratsa, bir şey doğru değil. Yönlendirme tablonuzu kontrol edin. netstat -rn ve yerel IP'lerin nasıl yönlendirildiğini görün, lo0 arayüzüne yönlendirilmelidir (127 gibi).

Sizin netstat -rn çıktı, buna benzer şekilde belirgin olmalıdır:

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            1.2.3.1            UGS       131  2655014   nge1
1.2.3.0/23         link#2             U           0       88   nge1
1.2.3.4            link#2             UHS         0    34848    lo0
127.0.0.1          link#5             UH          0    64678    lo0
192.168.0.0/26     link#1             U           2 41703537   nge0
192.168.0.1        link#1             UHS         0    70088    lo0

1
2017-07-23 15:20



Bunu yazıya dahil etmeliydim: bu arayüzler sazan arayüzleridir. Netstat'ı çalıştırıncaya kadar tamamen aklımı kaybettim. Bu bir fark yaratıyor mu? - Michael Gorsuch
Evet, işte tam orası. Kullandığınız adres, bir sazan arabirimine atanmışsa, bu IP, geri döngü aygıtına ulaşmadan önce sazan yığını boyunca zorlayacaktır; Yine de 100 ms aşırı olurdu. Söz konusu sunucu söz konusu IP'nin yöneticisi mi, yoksa yük dengeleme mi kullanıyorsunuz? Trafiği diğer sazan barınağına gönderiyor olabilir. - Chris S
Ev sahibi bu IP'nin ustasıdır. - Michael Gorsuch
Benzer bir ortamı kırıp bitirip test ettim. Sazan arayüzü IP, 127 IP ve fiziksel IP arasındaki yanıt sürelerinde kayda değer bir fark görmedim. Test etmek için sadece bir sunucum var, bu yüzden sazan köle yok, ama bir şeyin başka bir yerde ortamınızda (güvenlik duvarı veya trafik şekillendirme?) Geciktiğine neden olduğundan şüpheleniyorum. Bu bir i386-8.1-STABLE. - Chris S
Sağol Chris. Trafik azaldığında daha fazla bilgi toplayabilir miyim göreceğim. Mevcut sistem herhangi bir güvenlik duvarı paketi kullanmamakta veya herhangi bir trafik şekillendirmesi yapmamaktadır. Ayrıca, SO aile sitelerinde görüntülediğimiz iş ilanlarından dolayı çok miktarda trafik aldığımızı (orijinal soruyu güncelleyeceğimizi) de not etmeliyim. Normal saatlerde her yoldan 15 Mbps hareket ediyoruz. - Michael Gorsuch


Trafiğin, kutunun dışında kalmayacağı şekilde, kesinti seviyesi bir yazılım i / f olarak uygulanan geridönüşümü gördüm. Geridönüşümü çalıştırırken durum böyle olabilir mi? Feragatname: Sadece genel bir soru; FreeBSD hakkında hiçbir şey bilmiyorum.

- Pete


0
2017-07-23 15:50



FreeBSD'de çalışma şekli bu değil. - Chris S