SORU
11 HAZİRAN 2009, PERŞEMBE


XML zaman aşımı özel durum ayrıntılı soruşturma

Biz bir uygulama XML servisi (*.svc) IIS7 ve çeşitli müşterilerine hizmet sorgulama üzerinde çalışıyor. Server Win 2008 Server çalışıyor. Müşteriler ya da Windows Server 2008 veya Windows server 2003 çalıştırıyorsunuz. Aslında potansiyel XML sorunlar, çok sayıda ilgili olabilir gördüm olan aşağıdaki özel durum alıyorum.

System.TimeoutException: The request channel timed out while waiting for a reply after 00:00:59.9320000. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout. ---> System.TimeoutException: The HTTP request to 'http://www.domain.com/WebServices/myservice.svc/gzip' has exceeded the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout. 

30 dakika için zaman aşımı artış var ve yine de hata oluştu. Bu başka bir veri miktarı asla 30 dakika yükleme veya indirme için sürebilir çünkü oyun olduğunu söyledi.

Hata gelir ve gider. Şu anda daha fazla görülür. Eğer 3 istemciler aynı anda çalışıyorsa bende sorun görünmüyor ya da 100, hala arada bir ortaya çıkar. Çoğu zaman, zaman aşımı yok ama yine de saatte bir kaç bin. Hata çağrılan yöntemleri geliyor. Bu yöntemlerden biri parametreleri ve verileri bir parça verir. Başka bir parametre olarak büyük miktarda veri alır ama zaman uyumsuz olarak çalışır. Hatalar her zaman istemciden kaynaklanan ve asla yığın izleme referans sunucusu üzerinde herhangi bir kod. Her zaman bu hale getirmiş

 at System.Net.HttpWebRequest.GetResponse()
  at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)

Sunucu: Denedim (şu anda) bağlama aşağıdaki ayarları yaptım:

maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647"

Bir etkisi görünmüyor.

Denedim (şu anda) aşağıdaki azaltma ayarları:

<serviceThrottling maxConcurrentCalls="1500"   maxConcurrentInstances="1500"    maxConcurrentSessions="1500"/>

Bir etkisi görünmüyor.

Ben şu anda bisiklet Federasyonu servisi için aşağıdaki ayarları var.

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)]

Bir süre ConcurrencyMode.Multiple ile karşılaştım ve yine de hata oluştu.

IIS, yeniden temel SQL Server'ı yeniden başlatmayı, makineyi yeniden başlatmayı denedim. Bunların hepsi bir etkisi yok gibi.

Windows Güvenlik Duvarı devre dışı bırakmayı denedim. Bir etkisi görünmüyor.

İstemci, bu ayarlar var:

maxReceivedMessageSize="2147483647"

<system.net>
    <connectionManagement>
    <add address="*" maxconnection="16"/>
</connectionManagement> 
</system.net>

Müvekkilim bağlantıları kapatır:

var client = new MyClient();

try
{
    return client.GetConfigurationOptions();
}
finally
{
    client.Close();
}

Kayıt defteri ayarları daha giden bağlantılara izin verecek şekilde değiştirdim:

MaxConnectionsPerServer=24, MaxConnectionsPer1_0Server=32.

Şimdi sadece son zamanlarda svctraceviewer.exe denedim. İstemci ucunda bir istisna yakalayabildim. Süresi 1 dakika olduğunu görüyorum. Sunucu tarafında seyir izlemesi, sunucu bu durum farkında olmadığını görebiliyorum. Görebiliyorum maksimum süresi 10 saniye.

Sunucuda aktif veritabanı bağlantıları exec sp_who kullanarak baktım. Ben sadece bir kaç (2-3). Bir müşteri Listeleri kullanarak TCP bağlantılarını baktım. Bu genellikle yaklaşık 2-3 ve en fazla 5 veya 6 gördüm.

Basitçe söylemek gerekirse, tıkandım. XML bir uzman görmek mümkün olacağını bulabildiğim her şeyi denedim, ve çok basit bir şey eksik olmalı. Benim hislerime bir şeydir engelleme müşterilerim en düşük seviye (TCP), önce sunucu gerçekten aldığı mesaj ve/veya bir şey kuyruk iletileri sunucu düzeyi ve asla izin onları süreci.

Eğer bakmak gerekir herhangi bir performans sayaçları varsa, lütfen bana bildirin. (bu sayaçların bazı decypher zor olduğundan kötü gösterir. Ayrıca, nasıl bisiklet Federasyonu ileti boyutu günlük alabilir miyim? Son olarak, benim kaç müşterim ve sunucu (uygulama bağımsız) arasında saglayabilirim test etmek için izin verecek herhangi bir alet, bizim var

Zaman ayırdığınız için teşekkürler!

Ek bilgi 20 Haziran ekledi:

XML başvurum aşağıdakine benzer bir şey yok.

while (true)
{
   Step1GetConfigurationSettingsFromServerViaWCF(); // can change between calls
   Step2GetWorkUnitFromServerViaWCF();
   DoWorkLocally(); // takes 5-15minutes. 
   Step3SendBackResultsToServerViaWCF();
}

Nano kullanarak, hata oluştuğunda, beş TCP yeniden iletim bir TCP sıfırlama ardından daha sonra ben gördüm. Benim tahminim İLK bisiklet Federasyonu bağlantı öldürmeye geliyor. Ben durum raporu 3. adım zaman aşımına uğradı.

Tcp stream "tcp.bakarak bunu keşfettim stream eq 192". Ben o zaman "tcp.benim filtre genişletilmiş stream 192 ve http ve http eq.istek.yöntem eq POST" ve 6 Mesajlar gördüm bu akış sırasında. Bu garip görünüyordu, tcp gibi bir akış ile kontrol ettim.stream eq 100. Üç arama yapıyorum çünkü biraz daha normal gibi görünen üç Mesaj vardı. Ancak, her XML aramadan sonra bağlantımı kapatmak istiyorum, bir dere başına (ama TCP konusunda pek bilgim yok) Ara beklerdim.

Biraz daha araştırıyorum, disk için http paket yükü bu altı nerede aramaları ne bakmak için terk ettim.

1) Step3
2) Step1
3) Step2
4) Step3 - corrupted
5) Step1
6) Step2

Benim tahminim iki eşzamanlı istemcilerin çiftleri gördüm neden aynı bağlantıyı kullanıyor. Ancak, ben hala idrak edemediğim birkaç sorunları var:

a) Neden paket bozuk? Rastgele ağ fluke - belki de? Yük bu örnek kodu kullanarak gzip': http://msdn.microsoft.com/en-us/library/ms751458.aspx - kodu aynı anda kullanıldığında arabası arada bir Olabilir mi? Gzip Kütüphanesi olmadan test etmeliyim.

b) Neden beni görmek istedin Adım 1 ve adım 2 bozuk ameliyat SONRASI çalışan zaman aşımına uğradı? Eğer bu işlemleri ortaya olmalı gibi geliyor bana. Belki TCP benim anlayış kusurlu olduğu gibi, doğru akım bakıyorum. Aynı anda meydana gelen diğer dere var. Diğer akışları araştırmak isterim, akışları hızlı bir bakış 190-194 3. adım SONRASI uygun yük verileri (bozuk) olduğunu gösteriyor. Bana gzip kütüphanede tekrar bakmaya itiyor.

CEVAP
16 NİSAN 2010, Cuma


Kullanıyorsanız .Net istemci ayarlamak olmayabilir

//This says how many outgoing connection you can make to a single endpoint. Default Value is 2
System.Net.ServicePointManager.DefaultConnectionLimit = 200;

işte ilk soru ve cevap WCF Service Throttling

Güncelleme:

Bu config gider .Net istemci uygulaması ya da zaman ama testlere başlamadan önce başlangıç olabilir.

Ayrıca uygulama içinde olabilir.dosya olarak aşağıdaki config

<system.net>
    <connectionManagement>
      <add maxconnection = "200" address ="*" />
    </connectionManagement>
  </system.net>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FailArmy U

    FailArmy U

    29 AĞUSTOS 2009
  • Alexey - servant of Christ

    Alexey - ser

    15 EYLÜL 2007
  • Rockstar Games

    Rockstar Gam

    17 ŞUBAT 2006