WebLogic coincé protection des fils
Par défaut WebLogic tue coincé fils au bout de 15 min (600 s), c'est contrôlée par StuckThreadMaxTime
paramètre. Cependant, je ne trouve plus de détails sur comment exactement "stuckness" est défini. Plus précisément:
- Quel est le point à 15 min du compte à rebours commence. Traitement de la demande de commencer? Dernière
wait()
-comme méthode? Quelque chose d'autre? - Cela s'applique uniquement à la demande de threads de traitement ou à tous les threads? I. e. une demande peut-thread de traitement "s'échapper" de cette protection en créant un thread de travail pour une tâche de longue haleine? Surtout, peut-il déléguer réponse par écrit à ce travailleur sans 15 min du compte à rebours?
Mon cas d'utilisation est de télécharger de gros fichiers par le biais d'un système d'autorisation. Puisque l'utilisateur doit être authentifié ont des autorisations pour visualiser un fichier, je ne peux pas (ou au moins de ne pas savoir comment) laisser cette tâche à un simple serveur HTTP, par exemple Apache. Et parce que les fichiers peuvent être énormes, téléchargement (au moins en théorie) de prendre plus de 15 minutes.
Vous devez vous connecter pour publier un commentaire.
Weblogic ne PAS tuer coincé fils après la
StuckThreadMaxTime
. Il ne peut pas le faire, le message n'est qu'une information de l'état, de sorte que vous (admin) est conscient du fait que le thread a traversé 10 minutes (600 s = 10 min, pas de 15)C'est une valeur configurable.
Le chronomètre démarre lorsque le thread commence le traitement de la demande dans le serveur. Le fil ne seront pas tués, mais ils seront effectivement aller sur le traitement jusqu'à ce que l'opération est terminée. donc dans votre cas, vous n'avez pas besoin de s'inquiéter sur le thread se faire tuer, il vient de vous informer sur le temps de prise de vue - dont vous êtes au courant dans ce cas d'utilisation.
Il s'applique à tous les threads autant que je sache - tout donné naissance à fil sera également fonctionner selon les mêmes règles.
À mon humble avis, Weblogic (ou de tout serveur d'application) n'est pas l'endroit pour stocker et servir des fichiers volumineux. C'est idéalement conçu pour le serveur Web tier - nous utiliser SunOne sur lequel le fichier de téléchargement servlet peut être exécuté. Dans votre cas, vous avez besoin de Tomcat avec votre Apache pour optimiser cette.
La WLS10 WorkManager documentation peut causer certains réel 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 webapp en weblogic.xml et affecter une servlet pour l'utiliser.
Ajoutant à cela l'exemple, vous pouvez ajouter
<ignore-stuck-threads>true</ignore-stuck-threads>
à la<work-manager>
définition qui devrait prévenir les threads de travail pour que WorkManager d'être compté à l'encontre d'un échec de l'état du serveur.