2013-10-14 4 views
5

Ich habe ein Java-Programm erstellt und es zu einer JAR-Datei gemacht. Ich möchte es rund um die Uhr auf meinem AWS laufen lassen. Ich benutze eine Anwendung namens Bildschirm, um es nach dem Abmelden weiterlaufen zu lassen. Ich benutze diesen Befehl:Wie man ein Java-Programm rund um die Uhr laufen lässt?

screen java -jar my_app.jar 

Aber es kann nicht die ganze Zeit laufen. Es hört auf nach ein oder zwei Tagen zu laufen. Ich machte ein Logbuch, und ich fand keine Ausnahme, um es zu beenden. Ich frage mich, ob die JVM meine Anwendung aus irgendeinem Grund, zum Beispiel hohe Speicherauslastung, beenden wird? Führt die JVM ein Protokoll? Wo finde ich das Logbuch von JVM? Muss ich meine App zu einem Deamon machen? Wenn ich muss, wie?

+1

neu gestartet werden Klingt, als ob es schließlich nicht mehr genügend Arbeitsspeicher ist. Sie könnten jede Art von Profiler anhängen, um zu sehen, was die Ursache dafür sein könnte. – Makoto

+0

Wie kann ich einen Profiler anhängen? – user2452323

Antwort

8

Nein, es gibt nichts Besonderes, um eine Java-App am Laufen zu halten. Habe nur noch mindestens einen Nicht-Daemon-Thread aktiv. Zum Beispiel ist dies ein vollständiges Programm, das für immer laufen würde:

public class Forever { 
    public static void main(String[] args) throws InterruptedException { 
     while (true) { Thread.sleep(1000); } 
    } 
} 

Wenn Ihre App stirbt, es irgendwo aufgrund eines Fehlers ist. Stellen Sie sicher, dass alle Logs, die geschrieben werden, und stdout und stderr des Prozesses überprüft werden, um die Ursache zu finden.

+0

Vielleicht. Kleiner Punkt, aber wenn Sie 'Thread.sleep (Integer.MAX_VALUE)' verwenden, können Sie mehr CPU-Zyklen in der Schleife speichern –

2

Vielleicht haben Sie eine Lösung gefunden, aber unter Windows können Sie einen Stapel "Watchdog" verwenden, um Ihr Programm beim Schließen neu zu starten (und auch Daten zu protokollieren).

:launch 
java -jar my_app.jar 1>>log.txt 2>>err.txt 
goto launch 

auf Linux/Unix Sie eine bash in diese Richtung machen kann (ich bin zu faul, um eine 2 min Suche zu tun) auch eine gute Sache Ihrer App Speichernutzung sein würde und es zu überwachen schließen Wenn es über einem Schwellenwert (wie 70%) ist, wird es durch das ba * h Skript

Verwandte Themen