Stabilitätsprobleme: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Die Seite wurde neu angelegt: „* Im Betrieb des Servers kann es (vor allem bei der Verwendung von tagesaktuellen Versionen) zu '''Serverabstürzen''' kommen wodurch dann der Betrieb von Lett…“ |
|||
Zeile 12: | Zeile 12: | ||
:[[Datei:ClipCapIt-190522-225816.PNG]] | :[[Datei:ClipCapIt-190522-225816.PNG]] | ||
Eine Cronjob muss dann nur mehr die Datei regelmäßig anlegen und kontrollieren ob sie vom Server gelöscht wurde. | Eine Cronjob muss dann nur mehr die Datei regelmäßig anlegen und kontrollieren ob sie vom Server gelöscht wurde. | ||
mögliches Script für den Cronjob | |||
Ein mögliches Script für den Cronjob, welches auch vom Download-Bereich heruntergeladen werden kann. | |||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
Zeile 89: | Zeile 90: | ||
echo $msg | echo $msg | ||
fi | fi | ||
</pre> | |||
Das Script sollte mit den '''Benutzerrechten des Letto-Server-Users''' gestartet werden! | |||
Um das Script alle 3 Minuten zu starten bearbeitet man die Crontab mit | |||
<pre> | |||
crontab -e | |||
</pre> | |||
und setzt dort den Cronjob: | |||
<pre> | |||
*/3 * * * * /bin/bash /home/l-damb/lettowatchdog.sh | |||
</pre> | </pre> |
Version vom 22. Mai 2019, 22:04 Uhr
- Im Betrieb des Servers kann es (vor allem bei der Verwendung von tagesaktuellen Versionen) zu Serverabstürzen kommen wodurch dann der Betrieb von Letto nicht mehr funktioniert.
- Hat sich nur die Letto-Instanz "erhängt", reicht es mit dem Glassfish-Admin die Letto-Instanz neu zu starten.
- Hat sich der komplett Glassfish-Server "erhängt", so muss der komplette Glassfish-Server neu gestartet werden.
- Keine Software kann fehlerfrei programmiert werden, wodurch es immer wieder einmal zu einem Server-Absturz kommen kann. Wir versuchen unser Möglichstes um solche Abstürze möglichst zu verhindern.
Watchdog
- Da der Server-Administrator nicht immer sofort mitbekommt das der Serverdienst nicht mehr verfügbar ist bietet sich an den Server automatisch neu zu starten.
- Das automatische Neustarten des Servers übernimmt am Besten ein Linux-Cronjob welcher prüft ob der Server noch aktiv ist und dann den Server neu startet.
- Für die Prüfung kann entweder eine Anfrage an den Server gestellt werden oder über eine Datei die Serveraktivität geprüft werden.
Prüfen der Serveraktivität über eine Datei
Die Datei, welche der Lettoserver mindestens einmal pro Minut löscht, wenn sie vorhanden ist wird in der globalen Konfiguration mit dem Parameter "WatchdogFile" konfiguriert.
Eine Cronjob muss dann nur mehr die Datei regelmäßig anlegen und kontrollieren ob sie vom Server gelöscht wurde.
Ein mögliches Script für den Cronjob, welches auch vom Download-Bereich heruntergeladen werden kann.
#!/bin/bash # Der Letto-Watchdog überprüft ob der Server noch aktiv ist. Hierfür wird eine Datei angelegt, welche in der # globalen Konfiguration von Letto angegeben werden muss (zB. /opt/letto/lettowatchdog ) damit Letto diese Datei # alle 60 Sekunden löschen kann. Als Extension hat die Watchdog-Datei immer den Applikationsnamen am Webserver # z.B /opt/letto/lettowatchdog.letto für die Applikation letto # oder /opt/letto/lettowatchdog.beta für die Applikation beta # # Ist nach 2 Minuten die Datei noch immer vorhanden, so wird der Letto-Server neu gestartet # !! BITTE ANPASSEN !! # Watchdog-File: Besteht aus dem Pfad welcher in der globalen Konfiguration angegeben ist, mit der Applikation als Extension watchdogfile=/opt/letto/lettowatchdog.letto # Logfile für die Protokollierung des Restart-Vorganges logfile=/opt/letto/watchdog.info # Datei welche während der Sicherung erzeugt ist um zu Markieren, dass kein Reboot erfolgen darf da die Sicherung aktiv ist sicherungslock=/sicherung/sqlsicherungaktiv #---------------------------------------------------------------------------------------------------------------- datum=$(date) # Einen Serverzugriff am Glassfish erzwingen wget http://localhost:8080/letto # Einen Serverzugriff am Tomcat erzwingen #wget http://localhost:8088/tomcat msg="$datum Watchdog wird überprüft" echo $msg >>$logfile echo $msg touch $watchdogfile sleep 120 if [ -f $watchdogfile ] ; then # Watchdog hat angeschlagen, der Server muss neu gestartet werden!! rm $watchdogfile -rf if [ -f $sicherungslock ] ; then msg="$datum Server $1 wird nicht neu gestartet da die Sicherung aktiv ist" echo $msg >>$logfile echo $msg else # Glassfish Server neu starten msg="$datum Glassfish Server neu starten!" echo $msg >>$logfile echo $msg /opt/glassfish4/glassfish/bin/asadmin stop-domain /opt/glassfish4/glassfish/bin/asadmin start-domain msg="$datum Glassfish Server wurde neu gestartet!" echo $msg echo $msg >>$logfile # TomEE neu starten #msg="$datum Server tomee neu starten!" #echo $msg >>$logfile #echo $msg #/opt/tomee7/bin/shutdown.sh #sleep 5 #/opt/tomee7/bin/startup.sh # msg="$datum TomEE Server wurde neu gestartet!" # echo $msg # echo $msg >>/home/l-damb/restart.info fi else msg="$datum Watchdog ok" echo $msg >>$logfile echo $msg fi
Das Script sollte mit den Benutzerrechten des Letto-Server-Users gestartet werden!
Um das Script alle 3 Minuten zu starten bearbeitet man die Crontab mit
crontab -e
und setzt dort den Cronjob:
*/3 * * * * /bin/bash /home/l-damb/lettowatchdog.sh