Weblogic coincé fil protection

Par défaut WebLogic tue les threads bloqués après 15 min (600 s), Ceci est contrôlé par le paramètre StuckThreadMaxTime. Cependant, je ne peux pas trouver plus de détails sur la définition exacte de "stuckness". Plus précisément:

  • Quel est le point où commence le compte à rebours de 15 min. Début du traitement des demandes? Last wait() - méthode similaire? Quelque chose d'autre?
  • cela s'applique-t-il uniquement aux threads de traitement de requêtes ou à tous les threads? C'est-à-dire qu'un thread de traitement de requête peut-il "échapper" cette protection en générant un thread de travail pour une longue tâche? Surtout, peut-il déléguer l'écriture de réponse à un tel travailleur sans compte à rebours de 15 minutes?

Mon cas d'utilisation est le téléchargement de fichiers énormes via un système d'autorisation. Comme un utilisateur doit être authentifié et avoir les autorisations pour afficher un fichier, je ne peux pas (ou du moins ne sais pas comment) laisser cela à un simple serveur HTTP, par exemple Apache. Et parce que les fichiers peuvent être énormes, le téléchargement pourrait (au moins en théorie) prendre plus de 15 minutes.

21
demandé sur JoseK 2010-04-25 22:40:33

2 réponses

Weblogic nepas tue les threads bloqués après le StuckThreadMaxTime. Il ne peut pas le faire, le message n'est qu'une information d'État pour que vous (IE admin) sachiez que le thread a traversé 10 minutes (600 sec = 10 min, Pas 15)

C'est une valeur configurable.

La minuterie démarre lorsque le thread commence à traiter la requête dans le serveur. Le thread ne sera pas tué mais continuera à être traité jusqu'à la fin de l'opération. donc dans votre cas, vous n'avez pas besoin de vous soucier de l' thread se faire tuer, il vient de vous informer du temps pris-dont vous êtes au courant dans ce cas d'utilisation.

Il s'applique à tous les threads AFAIK-tout thread engendré fonctionnera également sous les mêmes règles.

IMHO, Weblogic (ou tout serveur d'application) n'est pas l'endroit pour stocker et servir des fichiers volumineux. Ceci est idéalement destiné au niveau du serveur Web - nous utilisons SunOne sur lequel le servlet de téléchargement de fichiers peut être exécuté. Dans votre cas, vous auriez besoin de Tomcat avec votre Apache pour optimiser ce.

22
répondu JoseK 2010-04-26 05:28:24

La documentation Wls10 WorkManager peut provoquer de véritables headscratching. Voir http://blogs.oracle.com/jamesbayer/2010/01/work_manager_leash_for_slow_js.html pour un exemple étape par étape de la façon de définir un WorkManager pour une application web dans weblogic.xml et assigner un servlet spécifique pour l'utiliser.

En ajoutant à cet exemple, vous pouvez ajouter <ignore-stuck-threads>true</ignore-stuck-threads> à la définition <work-manager> Qui devrait empêcher les threads travaillant pour ce WorkManager d'être comptés sur un serveur défaillant état.

7
répondu dave thompson 2011-01-21 21:54:02