2013-03-14 32 views
6

Geçerli projemde ("proje takımı" demek) IIS üzerinde barındırılan WCF hizmetlerini kullanıyoruz. İşte NetTcpActivator hizmeti (Net.Tcp Dinleyici Bağdaştırıcısı) ara sıra yanıt vermiyor

önemli olabilecek bazı teknik detaylar şunlardır:

  1. Biz WCF hizmetleri için NET 3.5 kullanmak
  2. Biz Net.TCP iletişim protokolünü kullanan
  3. İkimiz de 7 IIS ve barındırmak için IIS 7.5 kullanın bu hizmetler
  4. Biz

Yani her sunucuda birden IIS alt süreçleri kullanan

  • , sorun - bazen WCF- hizmetler kullanılamaz hale gelir. Bu WCF servislerine ulaşmaya çalıştığımızda zaman aşımı hatası alıyoruz. Ve WCF servisi işlevini geri yüklemenin tek yolu, NetTcpActivator (Net.Tcp Listener Adapter) Windows hizmetini yeniden başlatmasıdır.

    meslektaşım'ın teorisine göre, bu hata bu KB makalesinde açıklanan sorunlara ilgili olabilir:

    Düzeltme: bir .NET Framework 4- çalıştırdığınızda Smsvchost.exe WCF hizmeti için yanıt vermiyor Bu maddeye göre bazlı WCF hizmeti http://support.microsoft.com/kb/2536618

    , SMSvcHost (NetTcpActivator ve Liman Paylaşımı Hizmeti'ni barındıran konteyner servisi) bu rota bir istek (non 60 saniye içinde (IIS alt işlemi) w3wp için olamazsa kapatırsa -koşa edilebilir zaman aşımı). Maalesef, bu hatayı yeniden üretme yolunu bulamıyoruz. Örneğin, SMSvcHost'u 1 CPU çekirdeğine ve 1 iş parçacığı ve uzatılmış bekleyen bağlantı sınırını 1 M ile sınırlandırdık ve kullanıcı modunda% 100 CPU yüküne zorladık. Ve asılmadı!

    Bazen yük testlerimiz garip hatalara yol açar, ancak onları durdurduğumuzda, tüm hizmetler otomatik olarak normal durumlarına döner. Ancak bazen ağır bir yük NetTcpActivator'ı asamaz! Ayrıca, bunun yeni bir sorun olmadığını söylemek isterim. Meslektaşlarım 3 yıl önce almıştı (ek bilgi için bu konuya bakın http://forums.iis.net/t/1167668.aspx/1/10). Ve maalesef cevabı almadılar. Bazı yapılandırma değişikliklerinden sonra sorun ortadan kalktı! Ve şimdi yeni sunucuya geri döndü.

    Tüm düşüncelerinizi ve fikirlerinizi gerçekten takdir edeceğim!

  • +0

    Hiç bunu çözdünüz mü? –

    +0

    Bu konuda Microsoft ile açık bir biletim var. Güvenilir olmamasına rağmen sık sık çoğalabilirim. Şimdiye kadar, sizin için bir bağlantı düzeltildiğinden ve bellek döküntülerinin farklı olmasından dolayı bağlandığınız aynı sorun görünmüyor. Umarım buna bir çözüm bulabiliriz ve güncellemeyi burada yayınlayacağım. –

    cevap

    0

    Pek çok araştırmadan sonra, sorunumuzun nedenini izledim. Bunun gerçekleştiği başka senaryolar olabilir, ama umarım bu bazı insanlara yardımcı olacaktır. Microsoft, laboratuarlarında çoğaltma aşamasındadır ve sonuçta bir düzeltmeye sahip olmalıdır. Bizim durumumuzda, tüm gezegenlerin hizalanması gerekiyordu. İstemci ve sunucu (geliştirici makinesinde) için bir adet .NET 4 entegre uygulama havuzu vardı. Hizmet, başka bir projeden bağlanan ve hizmetin .csproj dosyasına eklenen özel bir oluşturma göreviyle oluşturma zamanında kopyalanan bağlamalar (<bindings configSource="serviceModel.bindings.config" />) için bir harici yapılandırma dosyası kullanıyordu.

    sorunu yeniden için:
    1. Dur çalışmakta olan tüm SMSvcHost hizmetler (Net.Tcp *, Net.Pipe, Net.Msmq). SMSvcHost işlemi gitmediğinden yeniden başlatma çalışmaz.Basın F5 görmek hizmet listesi - Visual Studio itibaren
    2. , WcfService içinde serviceModel.bindings.config silin Windows Gezgini WcfService
    3. için
    4. Çalıştır iisreset'i (w3wp kurtulmak giden ve SMSvcHost hizmetleri alır Temiz çalıştırmak that)
    5. WcfService oluşturun (bağlı yapılandırma dosyasını kopyalar)
    6. WcfClient sayfasına göz atın, iki kez gönderin. Her seferinde bir hata alırsanız, muhtemelen sorunla karşılaşırsınız. Bizim ana uygulamada zaman aşımı yerine test uygulaması CommunicationObjectFaultedException, bir zaman aşımı veriyordu, ama ya iyi.
    7. SMSvcHost hizmetlerini durdurun. Sorun ortaya çıktıysa, SMSvcHost için Olay Kimliği 8, Sistem olay günlüğüne kaydedilir.

    W3wp veya SMSvcHost'un suçlu olup olmadığını henüz bilmiyorum. Adım # 3 kritik, ama nedenini henüz açıklayamıyorum. Dosyayı silmezseniz, her şey yolunda. Dosyayı değiştirirseniz (oluşturulan tarih aynı kalır), her şey yolundadır. Config XML'i ana Web.config dosyasına taşırsanız, her şey yolundadır. Oluşturma görevi oluşturulan tarihi güncelleştirdiğinde, dosya bir tarihte önbelleğe alınır ve işlemlerden biri tarih değişikliğini algılar.

    SMSvcHost hizmetlerini (tam durdurma, tam başlangıç) yeniden başlatırsanız, istemci isteği bir veya iki kez geçer ve sizden geçerliliğini kaybedersiniz.

    Şu an için tahminim şu ki, bu bir dağıtımdan hemen sonra bir sorun olabilir, ancak her şeyin çalıştığından emin olursanız (ve hizmetleri gerektiği gibi yeniden başlatırsanız) o zaman iyi olmalısınız. Harici/bağlantılı dosyaları da yapamazsınız.

    Microsoft sorunu giderdikten sonra umarım daha fazla bilgi sahibi olurum.

    Son Güncelleme Bunu daha önce geri gelmeyi unutmuşum. Microsoft esasen bir hata olduğunu kabul etti, ancak bir çözüm olduğundan ve bilet üzerinde yeterince zaman harcadıklarından ve daha fazla araştırma yapmadıklarından dolayı. SMSvcHost aşağıdaki kurulum ile (daha önce yayınlanmıştır ne benzer) başladığında yarış durumu nedeniyle bazı tip olduğu görülmektedir:

    1. Sunucu WCF IIS'de
    2. kullanın olmayan bir HTTP SMSvcHost girer, böylece bağlayıcı dış yapılandırma onunla ilgisi yoktu Bağlama configSource

    kullanarak bağlamaları için

  • Kullanım dış yapılandırma dosyasını oynatmak. Çözüm, şimdi yaptığımız configSource'u kullanmamaktı.

  • +0

    Doğru olduğuna inanıyorum, önbelleğe alınır. Geçici dizinlerinizi boşaltın. IIS'de barındırdığınız için - Microsoft.NET klasörünün bir .Net alanında önbelleğe alınmış olduğunu tahmin ediyorum. Bir web uygulaması ile benzer bir sorun yaşadım - önbelleğe alınmış çalışma zamanını bu klasörden sildiyse, yeni ve eski bilgileri birlikte görüyor gibiydim ve uygulamanız sadece işe yaramazdı. Tam olarak neden bu davranışı çözdüğümü anlamadım; Sadece geliştirirken etrafta çalıştım.İlk önce el ile silindim ki bu da ağrının boynunda bir acıydı ama sorunu çözmekten daha kolaydı. – Stix

    İlgili konular