Per impostazione predefinita WebLogic elimina i thread bloccati dopo 15 minuti (600 s), questo è controllato dal parametro StuckThreadMaxTime
. Tuttavia, non riesco a trovare maggiori dettagli su come viene definita esattamente la "stuckness". In particolare:Protezione thread WebLogic bloccato
- Qual è il punto in cui inizia il conto alla rovescia di 15 min. Inizia l'elaborazione della richiesta? Ultimo metodo
wait()
-like? Qualcos'altro? - Questo si applica solo ai thread di elaborazione delle richieste oa tutti i thread? Cioè un thread di elaborazione richieste può "scappare" questa protezione creando un thread di lavoro per un'attività lunga? Soprattutto, può delegare la risposta scrivendo a un tale lavoratore senza un conto alla rovescia di 15 min?
Il mio caso è il download di file enormi tramite un sistema di autorizzazione. Poiché un utente deve essere autenticato e disporre delle autorizzazioni per visualizzare un file, non posso (o almeno non so come) lasciare questo ad un semplice server HTTP, ad es. Apache. E poiché i file possono essere enormi, il download potrebbe richiedere (almeno in teoria) più di 15 minuti.
OK, ma come so può ridistribuire l'intera applicazione se ci sono troppi thread bloccati, no? Potrei aver mescolato le cose con il timeout della sessione - abbiamo avuto qualche problema in passato. Informazioni sui file: l'applicazione è così grande e buggata che non c'è tempo da dedicare all'ottimizzazione in quanto vi sono sempre problemi più urgenti. – doublep
Il server smetterà di rispondere alle nuove richieste se ci sono troppi thread bloccati, ma nel tuo caso non sono realmente "bloccati" ma elaborano richieste lunghe. Un approccio migliore consiste nel fornire a FileDownloadServlet il proprio pool di thread di esecuzione: su WL10 questo sarà un WorkManager dedicato. Ciò garantisce che qualsiasi thread bloccato/interessato nel download non influenzi il resto del server che elabora le richieste normali. vedere qui per ulteriori informazioni - http://download.oracle.com/docs/cd/E11035_01/wls100/config_wls/self_tuned.html#wp1059038. È possibile definire un criterio di invio per tale servlet. – JoseK
Grazie per la risposta e i chiarimenti. – doublep