2012-05-14 15 views
5

Netty kullanarak basit bir TCP sunucusu oluşturdum ve bunu JMeter ile karşılaştırmak istiyorum. Bayt göndermek için BinaryTCPClientImpl sınıf adını kullanarak bir JMeter TCP Sampler kullanıyorum. "Gecikme yok" ve "bağlantıyı yeniden kullan" seçeneğini işaretledim. Bunların SO_NODELAY ve SO_REUSEADDR için olduğunu varsayalım. Her biri 1000 TCP isteği yapan 75 iş parçacığı çalıştırıyorum. Ben "bağlantıyı yeniden" sonra tüm 75,000 isteklerini işaretini kaldırırsanız soket yazma hatasıNetty + JMeter, bağlantıyı yeniden kullanırken hatalar

: Bağlantı iptal neden Yazılımı:

500 java.net.SocketException: Ben sürekli taleplerinin yaklaşık% 11 ile başarısız bkz Tek bir hata olmadan başarılı olur, ancak çıktı sadece% 33'dür.

Bu hataları önlemek için Netty sunucumla yapmam gereken bir şey var mı?

cevap

0

Sunucum şu şekilde çalışır: bağlantıyı kabul eder, bazı verileri alır, bazı veriler gönderir, veri gönderildikten sonra bağlantıyı kapatır. JMeter dokümanlar, TCP soketinin "soketi yeniden kullan" seçeneği işaretlenmedikçe bağlantıyı kapattığını söylüyor, bu yüzden bu SO_REUSEADDR değil. Bazı durumlarda istemci veri gönderir, veri alır ve sunucu soketi kapatmadan önce istemci verileri tekrar göndermeye çalışır, sonra sunucu soketi kapatır ve JMeter isteğin başarısız olduğunu düşünür. Böylece, çözüm "yeniden kullanım adresini" kontrol etmemek içindir. Müşterilerim nispeten seyrek olarak iletişim kurduğundan, her bir isteğin kapatılması beklenir.

+0

Bunu muhtemelen asıl soruya eklemelisiniz :) – Daan

+0

Yine de cevabın bu olduğunu düşünüyorum. – NateS