Wir haben eine Anwendung, die auf WebSphere läuft. Anfragen dauern oft sehr lange (mehrere zehn Minuten). Unsere Benutzer berichten, dass Internet Explorer die Verbindung unterbricht und nach einer gewissen Wartezeit einen leeren Bildschirm anzeigt. Das Anwendungsprotokoll besagt, dass Anfragen auf Servlet-Ebene normal abgeschlossen werden, es gibt jedoch eine Reihe von Fehlern wie diesen:
[4/24/15 11:31:19:253 MSK] 0000001f ThreadMonitor W WSVR0605W: Thread "WebContainer : 2" (00000027) ist seit 750529 Millisekunden aktiv und hängt möglicherweise. Es gibt insgesamt 1 Thread(s) auf dem Server, der/die hängen könnte/n
Welche Konfigurationsoptionen von WebSphere oder Internet Explorer sollten bei der Lösung des Problems berücksichtigt werden?
Antwort1
Zunächst möchte ich darauf hinweisen, dass Sie eine asynchrone Möglichkeit finden müssen, mit sehr langen Transaktionen in Ihrer App umzugehen.
Wenn Sie nicht für das Anwendungsdesign verantwortlich sind, können Sie zwei (wirklich schmutzige) Dinge tun:
- Ändern Sie die Warnung für hängende Threads. (Dies ist fehlerhaft, da sich dies auf alle Threads in Ihrem Container auswirken kann und Sie möglicherweise eine benötigte Warnung verpassen.)Hierist der Weg, dies zu tun.
- Erhöhen Sie Ihr Verbindungs-Timeout in den benutzerdefinierten Eigenschaften Ihres Webcontainers (das ist fehlerhaft, da es Ihre Leistung und einige andere Konfigurationen beeinträchtigt, da Sie möglicherweise gezwungen sind, Ihren Threadpool und anschließend Ihren Speicher usw. zu vergrößern).
Sie sollten jedoch unbedingt die Probleme mit Ihrem Back-End UND/ODER Ihrer Implementierung beheben (oder einen Core Dump für Ihren Entwickler erstellen).