Soru WebLogic sıkışmış iplik koruması


Varsayılan olarak, WebLogic 15 dakika (600 s) sonra sıkışmış iş parçacığı öldürür, bu tarafından kontrol edilir StuckThreadMaxTime parametre. Ancak, tam olarak "sıkışmış olmanın" nasıl tanımlandığı hakkında daha fazla ayrıntı bulamıyorum. özellikle:

  • 15 dakikalık geri sayımın başladığı nokta ne. İşlem başlatılsın mı? Son wait()benzer bir yöntem mi? Başka bir şey?
  • Bu sadece istek iş parçacığı veya tüm iş parçacığı için geçerli mi? Yani Bir iş parçacığı uzun bir görev için yumurtlayarak bir istek işleme iş parçacığı bu koruma "kaçış" olabilir mi? Özellikle, 15 dk geri sayım yapmadan böyle bir çalışana cevap yazabiliyor mu?

Usecase bir izin sistemi aracılığıyla dev dosyaların indirilmesi. Bir kullanıcının kimliği doğrulanması ve bir dosyayı görüntüleme iznine sahip olması gerektiğinden, bunu basit bir HTTP sunucusuna (örneğin nasıl) bilemeyeceğimi (veya nasıl yapacağımı bilmiyorum); Apaçi. Ve dosyalar çok büyük olabildiği için, indirme (en azından teoride) 15 dakikadan fazla sürebilir.


21
2018-04-25 18:40


Menşei




Cevaplar:


Weblogic yapar DEĞİL sonra sıkışmış konuları öldürmek StuckThreadMaxTime. Bunu yapamazsınız, mesaj sadece bir durum bilgisidir, böylece siz (yani admin) iş parçacığının 10 dakika geçtiğinin farkındadır (600 sn = 10 dk, 15 değil)

Bu yapılandırılabilir bir değerdir.

Zamanlayıcı, iş parçacığı sunucu içinde isteği işlemeye başladığında başlar. İş parçacığı öldürmeyecek, ancak işlem bitene kadar işlemeye devam edecek. Bu durumda, öldürülecek iş parçacığı için endişelenmenize gerek yok, sadece bu kullanım durumunda farkında olduğunuz zaman hakkında size bilgi vermiştir.

Tüm iplik AFAIK için geçerlidir - herhangi bir yumurtlu iplik aynı kurallar altında da faaliyet gösterecektir.

IMHO, Weblogic (veya herhangi bir uygulama sunucusu), büyük dosyaları saklamak ve sunmak için uygun bir yer değildir. Bu, Web sunucusu katmanı için idealdir - Dosya indirme sunucularının çalıştırılabildiği SunOne kullanıyoruz. Durumunuzda, bunu optimize etmek için Apache'nizle birlikte Tomcat'e ihtiyacınız olacaktır.


22
2018-04-26 05:20



Tamam, ama bildiğim gibi, çok fazla sıkışmış konu varsa, tüm uygulamayı yeniden konuşabilir, değil mi? Oturum zaman aşımıyla karışık şeyler yapabilirim - geçmişte bununla ilgili bazı sorunlarımız vardı. Dosyalar hakkında - uygulama çok büyük ve buggy her zaman daha fazla sıkıştırma sorunları olduğu gibi optimize etmek için harcamak için zaman yoktur. - doublep
Çok fazla sıkışmış iş parçacığı varsa, sunucu yeni isteklere yanıt vermeyi durduracaktır - ancak sizin durumunuzda gerçekten 'sıkışmış' değil, uzun istekleri işliyorlar. Daha iyi bir yaklaşım, FileDownloadServlet'in kendi iş parçacığı havuzu olmasını sağlamaktır - WL10'da bu özel bir WorkManager olacaktır. Bu, indirmede sıkışmış / etkilenen herhangi bir iş parçacığının, sunucunun normal isteklerini işleyen geri kalanını etkilememesini sağlar. daha fazlası için buraya bakın - download.oracle.com/docs/cd/E11035_01/wls100/config_wls/.... Bu sunucu için bir gönderim politikası tanımlayabilirsiniz. - JoseK
Cevap ve açıklamalar için teşekkürler. - doublep
Yönetici bunu anladıktan sonra, weblogic'te sıkışmış konuları öldürmenin bir yolu var mı? - f1wade
@ f1wade: hayır - bu mümkün değil - JoseK


WLS10 WorkManager belgeleri, bazı gerçek kafa çizilmesine neden olabilir. Görmek http://blogs.oracle.com/jamesbayer/2010/01/work_manager_leash_for_slow_js.html weblogic.xml dosyasında bir web uygulaması için WorkManager'ın nasıl tanımlanacağı ve bunu kullanmak için belirli bir sunucu uygulamasının nasıl atanacağı adım adım örnek için.

Bu örneğe ekleyerek ekleyebilirsiniz <ignore-stuck-threads>true</ignore-stuck-threads> göre <work-manager> hangi tanımı meli Bu WorkManager için çalışan iş parçacığının başarısız bir sunucu durumuna karşı sayılmasını engellemek.


7
2018-01-21 21:54



Sadece aradığım şey, teşekkürler! - Tim Sylvester
Blog yayını taşındı blogs.oracle.com/jamesbayer/... - weberjn