2016-03-21 26 views
4

durdurma tutar Uzun koşu Azure Webjob - Ben Azure ile çalışıyoruz

Ben kullanılarak inşa edilmiştir webjob var .. Bir süredir webjobs ama yine de bazı son derece uzun çalışan bir web iş başarısız neden anlamaya mücadele ediyorum Azure SDK'sı ve gelen bir kuyruk mesajından tetikleniyor. Bu web işi, Azure Blob depolama biriminden 110000 öğeyle ilgili bilgi içeren bir XML bloğu çekiyor, daha sonra bunların üzerinden geçiyor ve REST WebApi2 uç noktaları kullanılarak çeşitli varlıkları oluşturmak için çeşitli HttpClient istekleri kullanılıyor. Hem masa depomuzda hem de DocumentDB'de ... süreç üzerinde çalıştığım birşeyler sloganı, ama günlerce koşuyor ... ki bu acil bir durum olmadığı için gayet iyi, sadece iki gün sonra, sadece durmadan devam ediyor. ... son mesaj sadece "Thread b" idi. eing iptal edildi ". ... GÜNCELLEME Düzenli günlüğü dışarı verme ve http yüzden hiçbir şey yapmadan orada oturdu edilir işi gibi değil çağırır:

Ben de S1 bütün uygulama hizmeti planını yükseltilmiş ve web uygulamasını belirledik belirtmelidir

web işini her zaman açık olarak yapın ...

Ayrıca "WEBJOBS_RESTART_TIME" a baktım, ancak bu, durduktan sonra yeniden başlatmayla ilgili değil, hata yapmadan sürekli bir işi üstlendiğim bir şey yapmamalı!

cevap

1

Uzun süredir çalışan web işleriyle ilgili birçok sorun yaşadık ve ücretli destek satın aldık çünkü işler çok sık başarısız olacak ve nedenini anlayamadık. Bu 2 + ay boyunca devam ediyor ve hala çözünürlük yok. Bir süre için yeniden başlatmaları durduran ama sonuçta yeniden başlatılan local_cache ayarını tavsiye ettiler.

Bunları yıllarca kusursuz bir şekilde çalıştıkları bir vm'den çıkardık. Benim düşünceme göre, web işleri uzun süren işler için uygun değildir ve bir vm'ye geçmelisiniz. Bir dizi kısa koşu işimiz var ve iyi çalışıyorlar ama uzun süren her şey için web işlerinin asal bir zamanda hazır olmadığını düşünüyorum. Bu konularda destekle boş vakitler harcadık ve açıkçası, bu noktada vaktimizi boşa harcadığımızı hissediyoruz. Kendinizi acıdan kurtarın ve bir vm'ye gidin ve bunu 6 ayda tekrar ziyaret edin.

+0

Günde birden çok kez başarısız olan ve sorunu çözemeyen destek için ödeme yaptığınız bir üretim sisteminiz varsa, bir konferanstan haberleri beklemek en iyi strateji olmayabilir. – JonnyBravoJr

+0

Yorumlarınız için teşekkür ederim, her zaman ilginç ve tuhaf bir şekilde, bununla mücadele eden tek kişi olmadığımı bilmiyorum. Microsoft yönergeleri, web işlerinin bıraktığımız yerden alma yeteneğine sahip olması gerektiğidir, sanırım potansiyel olarak kaynaklar arasında hokkabazlık yaptığınız zaman, bu şaşırtıcı değil. Bu mantığı işlerime ekledikten sonra, yeniden başlattığı gerçek aslında önemli değildi. Sanırım ona öyle baktığınız zaman, o zaman işiniz muhtemelen buna izin vermek için biraz daha savunmasız programlanmalıdır. – dreadeddev

+0

Yukarıdakileri yayınladığımdan beri öğrendiğim birkaç öğe: 1) Aslında Webapp/Webjob'inizde çok fazla hareket etmiyorlar ve bu yüzden bir iş başarısızlığı nadiren böyle bir faaliyetin belirtisidir. Bu bana bir destek teknisyeni tarafından anlatıldı. Bu, "kaldığı yerden kalkma" stratejisinin Microsoft'un temel sorunla başa çıkma şeklinin olduğuna inanmamı sağlıyor. 2) Bir prömiyeri istemiyorsanız destek satın almayı zahmet etmeyin çünkü gerçekten başka bir şey almıyorsunuz senin sorununun nasıl "ben nasıl" yazdığına göre. Herşeyi bir VM'ye geri taşıdık ve bu yüzden rock katı olduğunu biliyoruz, bu bizim kodumuzun olmadığını biliyor ..... – JonnyBravoJr

4

Uzun süredir çalışan webjobs içeren bir şey var. İplik zaman gerçekten uzun süreler boyunca çalışmaya devam etmek için ya vardır: her şimdi ve sonra

    • Yaz Console.Write ile çıkışa bir App Ayarı WEBJOBS_IDLE_TIMEOUT (source) denilen ekle hangi , ortamın, kapatılmadan önce bir Boşta kalma web işini (hiçbir konsol çıkışı) bekleyeceği süreyi tanımlar.

    Her ikisini de yaparım, Console.Write'i bir "kalp atışı" gibi ekleyin ve Uygulama Ayarı'nı ekleyin.

  • +0

    Teşekkürler, ama her yerde olduğu gibi Trace.TraceInformation yazıyorum, bu yüzden Azure'un boşta olduğunu düşündüğümü göremiyorum ... ama bu ayarı ekleyeceğim ... Console.Write kullanma eğiliminde değilim Bir webjob, sanki izleme haklarını kullanıyorsunuz sanki sizin için depolama blob! – dreadeddev

    +0

    Anlıyorum, sorun şu ki, Webjob rölantisi üzerinden "izlenen" işlemin "çıkış" ı kontrol etmesidir, ki bu da bu durumda Konsol'dur. –

    +0

    Genius !!! Bu yüzden mesajların kaydını yapmak ve daha sonra farklı bir monitör izlemek için kolay bir yol koydular !!! Birleştirilen düşünmeyi sevmek zorundayım, ama kafaları yukarı için bir milyon teşekkür .... nasıl gidiyor göreceksiniz! – dreadeddev