2016-10-20 17 views
0

Dies ist das erste Mal, dass ich eine Frage zu Stack Overflow stelle. Ich habe kürzlich einen Ubuntu 16.04 Virtual Private Server als Host für eine Webanwendung konfiguriert. Ich starte ngnix auf einem Tomcat-Server, der eine MySQL-Datenbank liest und schreibt. Die Anwendung läuft gut, mit Ausnahme der Tatsache, dass Tomcat sich von Zeit zu Zeit neu startet, was zu einem Fehler von 500 führt, der von einer "unterbrochenen Leitung" herrührt, wenn jemand sich anmeldet (d. H. Eine Verbindung zur Datenbank herstellt). Ich werde ein Bild der 500 nächstes Mal posten, wenn es passiert. Ich ging in meine vps und schaute auf meine Tomcat-Neustart-Nachricht. Das ist, was ich sehe: Tomcat status message.Tomcat startet mit Fehlern neu (Exit 143), läuft und schlägt nach der Zeit fehl

ich auch ein wenig Tauchen in die Tomcat-Protokolle haben und dies ist eine Log-Datei, die mit diesem Neustart Zeit entspricht: Tomcat log file

ich tat etwas Forschung, um zu versuchen und zu lösen diese selbst, aber ohne Erfolg. Ich glaube, dass der Exit = 143 der Prozess ist, der von einem anderen Programm oder dem System selbst beendet wird. Ich habe auch einige mysql-connector-java.jar verschoben. Ich habe gelesen, dass es sich im Tomcat/lib-Verzeichnis und nicht im WEB-INF der Webanwendung befinden sollte. Vielleicht muss ich andere Einstellungen konfigurieren.

Jede Hilfe oder jede Richtung würde sehr geschätzt werden. Ich habe dieses Problem seit einer Woche bekämpft, indem ich viel gelernt habe, aber wenig erreicht habe.

Danke

Antwort

1

Schauen Sie sich die Zeitleiste an. Es beginnt um 19:49:23.766 im Tomcat-Protokoll mit dieser Nachricht:

Ein gültiger Befehl zum Herunterfahren wurde über den Shutdown-Port empfangen. Stoppen der Server-Instanz

Exit Code 143 ist ein Ergebnis dieser Abschaltung und zeigt nichts an.

Die Frage, die Sie beantworten müssen, ist: Wer dass Shutdown-Befehl senden, und warum?


Auf einer seitlichen Anmerkung: Die früheren Meldungen gibt an, dass Tomcat Verbindung zur Datenbank verloren, und dass Sie eine Validierungsabfrage nicht konfiguriert haben. Sie sollten das immer konfigurieren, da Datenbankverbindungen im Verbindungspool veraltet sind und erkannt werden müssen.


Theorie: Haben Sie auch einen Monitoring-Service laufen haben, die Ihre Anwendung testet sein auf? Erkennt diese Überwachung eine zeitgesteuerte Datenbankverbindung, klassifizieren Sie diese als eine angehaltene Webanwendung und starten Sie Tomcat automatisch neu?

0

Während ich glaube, ich bin nicht in der Lage, um den Kern des Problems zu sehen, die Sie mit Ihrem gesamten Setup angesichts der kleinen Auszug Ihrer Protokolldateien haben, fällt eine Sache ins Auge. Im Tomcat-Protokoll gibt es die Zeile

A valid shutdown command was received via the shutdown port. Stopping the server instance. 

Dies erklärt, warum der Server neu gestartet wurde. Jemand (ein externer Prozess, ein böswilliger Angreifer, ein Skript oder was auch immer. Abhängig von der Einrichtung Ihres Servers) hat einen Befehl zum Herunterfahren an den Tomcat-Shutdown-Port (standardmäßig 8005) gesendet, der den Tomcat heruntergefahren hat.

Siehe OWASP's recommendations for securing a Tomcat server instance für die Befestigung dieser möglichen Sicherheitseinheit.

In Bezug auf die scheinbaren Hibernate-Probleme, die Sie haben, bekomme ich nicht genug Informationen aus Ihren Protokollen, um eine nützliche Aussage zu machen. Aber Sie können das MySQL-Jar in Tomcat/lib belassen, da dies nicht die Ursache Ihres Problems ist.

Verwandte Themen