2017-05-07 2 views
1

Ich habe eine Clojure-Webanwendung, die auf einem kostenlosen Plan auf Heroku ausgeführt wird. Die App funktioniert seit mehr als einem Monat gut, aber in den letzten 3 Tagen haben die Logs diesen Fehler angezeigt und die App funktioniert nicht.Fehler R14 (Speicherkontingent überschritten)

Error from Heroku logs

Ich bin dieser Fehler nicht in der Lage vor Ort zu reproduzieren, wo alles gut anläuft.

Ich habe versucht, die App mehrmals neu zu starten, eine neue Instanz zu implementieren und mit JAVA_OPTS und JAVA_TOOL_OPTIONS herumzuspielen, aber nichts hat geholfen, und ich stehe mit denselben Fehlern fest. Der gesamte Code für die Anwendung lautet here. Hat jemand Erfahrung mit diesem Fehler und mögliche Wege, um es zu umgehen?

Antwort

1

ich den Täter des überschritten Speicher gefunden. Der Befehl, der von Heroku beim Start ausgeführt wurde, verwendete die JAR-Datei nicht. Was ich vorher hatte, war web: lein ring server-headless und ich änderte es, um das Glas web: java -jar target/<app-name>-standalone.jar im Procfile auszuführen.

Da ich ring verwende, ich habe Heroku auch lein ring uberjar statt lein uberjar vor der Inbetriebnahme führen: Das ist so einfach wie LEIN_BUILD_TASK='ring uberjar' als globaler Konfigurations var in Heroku Einstellung.

1

Wie die Fehlermeldung sagt, verbraucht die App mehr Speicher als Heroku für sie zugewiesen. Mit Heroku können Sie sich App-Metriken ansehen, von denen Graphen nützlich sein könnten, um die Ursache zu identifizieren.

Heroku hat eine spezielle Anleitung für speicherbezogene Probleme in der JVM-Anwendung java-memory-issues. Vielleicht finden Sie es nützlich.

0

Versuchen Sie max Heap-Größe niedriger Einstellung von

Lauf
$ heroku config:set JAVA_TOOL_OPTIONS="-Xmx256m" 
+0

Dies scheint in meinem speziellen Fall nicht zu helfen. Versucht mit ein paar Optimierungen wie diese https://github.com/rogerallen/tweegeemee/blob/master/project.clj#L15-L20 aber keinen Erfolg. – feychou

+1

Das bedeutet wahrscheinlich, dass Sie viel natives Gedächtnis haben. Lesen Sie diese https://jkutner.github.io/2017/04/28/oh-the-places-your-java-memory-goes.html – codefinger

Verwandte Themen