2017-08-16 2 views
1

Leerlauf zu gehen Ich bin neu in Java und Tomcat. Ich entwickle eine Website in Java mit Federmvc. Es wird auf einem Linux-Server bereitgestellt, auf dem Tomcat 8 läuft. Alles funktioniert gut, wenn ich eine Verbindung zur Datenbank herstelle. Das Problem ist, dass die Website sehr schnell untätig wird. Ich war nicht in der Lage, es genau zu bestimmen, aber es scheint, dass es nur etwa eine Minute Inaktivität dauert, bis die gesamte Seite untätig ist. Dann ist die nächste Anfrage extrem langsam und wird in allen meinen Klassen geladen. Ich verliere meine Sitzungen auch.Java-Web-Anwendung scheint schnell in Tomcat

Ist das ein häufiges Vorkommen? Klingt es so, als würde ich in Java etwas falsch machen? Kater? Beide?

EDIT: Angesichts StuPointerException Kommentar, habe ich meine Datenbank Verbindungsverwaltung aktualisiert. Ich verwende jetzt Apache dbcp. Ich werde aktualisieren, wenn dies das Problem löst. Ich möchte meinem QS-Tester genügend Zeit geben, um meine Seite noch mehr zu besuchen.

+0

Verwenden Sie einen Verbindungspool, um eine Verbindung zu Ihrer Datenbank herzustellen? – StuPointerException

+0

Ich bin mir der zugrunde liegenden Architektur nicht sicher, aber ich verwende eine OracleDataSource für Datenbankverbindungen, die Abfragen über JDBC ausführen. Ich öffne und schließe Verbindungen, wenn jede Abfrage ausgeführt wird. Es lohnt sich, darauf hinzuweisen, dass auch das Laden der Anmeldeseite (die nicht mit der Datenbank verbunden ist) im Leerlauf langsam ist. –

+0

Dies kann aufgrund der Einschränkungen Ihres Cloud-Anbieters auftreten. Wenn Sie beispielsweise eine Anwendung kostenlos auf Heroku hosten, wird Ihre Anwendung nach 30 Minuten Inaktivität in den Ruhezustand versetzt. –

Antwort

1

Es ist schwierig, Ihre Frage ohne weitere Informationen zu Ihrer Serverkonfiguration direkt zu beantworten.

Für was es wert ist, jedes Mal, wenn ich dieses Verhalten sehe, ist es auf einen falsch konfigurierten Datenbankverbindungspool zurückzuführen. Beim Erstellen neuer Datenbankverbindungen kann ein erheblicher Aufwand entstehen.

Wenn Sie keinen Verbindungspool verwenden oder zulassen, dass Verbindungen im Pool ausfallen (aufgrund fehlender Validierungsabfragen/-prüfungen), werden aufgrund von Verbindungstimeouts im Laufe der Zeit Leistungsprobleme angezeigt.

+0

Ich denke definitiv, dass die Datenbankverbindungen ein Problem sein könnten. Ich werde dort mehr forschen. Mein Hauptpunkt ist, dass dies kein Standardverhalten für Tomcat ist, richtig? Wie eine Website sollte nicht in einer Minute untätig gehen. Es scheint, dass es mehr ein Problem in meinem Code als Tomcat-Konfiguration ist. Klingt das richtig? –

+0

Ja, das ist richtig. – StuPointerException

+0

Ich markiere dies als die Antwort. In meinem Update oben verwendete ich keine Art von Verbindungspool. Ich aktualisierte meine Datenbankverbindung, um Apache DBCP zu verwenden, und die Leistung hat stark zugenommen. Die Seite läuft "normal", mehr oder weniger, jetzt. Mein QA Tester ist glücklich! EDIT: Auch, danke für Ihre Hilfe. –