Standardmäßig löscht WebLogic festsitzende Fäden nach 15 min (600 s), dies wird durch den Parameter StuckThreadMaxTime
gesteuert. Mehr Details darüber, wie "Steckenbleiben" genau definiert ist, kann ich jedoch nicht finden. Speziell:WebLogic blockiert Fadenschutz
- Wo ist der Punkt, an dem 15 Minuten Countdown beginnt. Anfrage Verarbeitung starten? Letzte
wait()
ähnliche Methode? Etwas anderes? - Gilt dies nur für Request-Processing-Threads oder für alle Threads? I.e. Kann ein Request-Processing-Thread diesen Schutz umgehen, indem er einen Worker-Thread für eine lange Aufgabe erzeugt? Insbesondere, kann es Antwortschreiben an solch einen Arbeiter delegieren ohne 15 Minuten Countdown?
Mein Anwendungsfall ist der Download von riesigen Dateien durch ein Berechtigungssystem. Da ein Benutzer authentifiziert werden muss und Berechtigungen zum Anzeigen einer Datei haben muss, kann ich dies (oder zumindest nicht wie) einem einfachen HTTP-Server überlassen, z. Apache. Und da Dateien riesig sein können, könnte der Download (zumindest in der Theorie) mehr als 15 Minuten dauern.
OK, aber wie ich weiß, kann es die gesamte Anwendung neu bereitstellen, wenn es zu viele festgefahrene Threads gibt, nicht? Ich könnte Dinge mit Session-Timeout verwechselt haben - wir hatten in der Vergangenheit einige Probleme damit. Über Dateien - Die Anwendung ist so umfangreich und fehlerhaft, dass es keine Zeit für die Optimierung gibt, da es immer dringlichere Probleme gibt. – doublep
Der Server reagiert nicht mehr auf neue Anforderungen, wenn zu viele festgefahrene Threads vorhanden sind - aber in Ihrem Fall sind sie nicht wirklich "festgefahren", sondern verarbeiten lange Anfragen. Ein besserer Ansatz besteht darin, dem FileDownloadServlet seinen eigenen Thread-Pool zu geben - auf WL10 ist dies ein dedizierter WorkManager. Dies stellt sicher, dass alle im Download festgestellten/betroffenen Threads keinen Einfluss auf den Rest des Servers haben, der normale Anfragen bearbeitet. Weitere Informationen finden Sie hier - http://download.oracle.com/docs/cd/E11035_01/wls100/config_wls/self_tuned.html#wp1059038. Sie können eine Versandrichtlinie für dieses Servlet definieren. – JoseK
Vielen Dank für die Antwort und Klarstellungen. – doublep