Heroku - warum sollte ich Fehler R12 (Zeitüberschreitung beim Beenden) erhalten, wenn ich eine Veröffentlichung nach Heroku schiebe?

8

Gelegentlich, wann immer ich eine Veröffentlichung nach Heroku schicke, würde ich kurz darauf den folgenden Fehler erhalten (ich führe 2 512MB Dynos aus):

%Vor%

Ich benutze den Unicorn-App-Server, leider nur 1 pro Unicorn-Worker pro 512MB-Dyna (da in der Spitze meine App RSS 320MB ist - ja, geh Figur, etwas Bloat passiert). Nicht sicher, ob das hilft, aber ich bin auf Cedar14 mit Preboot aktiviert. UNICORN_WORKERS wird auf 1 gesetzt.

Hier ist mein Einhorn-Setup. Sollte ich mich mit diesem Fehler befassen?

Und während wir zu diesem Thema sind, ist die DB-Poolgröße 15 zu groß für meine 2 Dynoden (ich benutze den Postgres-Standard, der bis zu 120 gleichzeitige Verbindungen zulässt).

%Vor%     
user1322092 21.11.2014, 02:02
quelle

1 Antwort

9

Heroku hat beim Deployment eine Regel, die im Grunde folgendes sagt:

  • Wenn Ihr Prüfstand neu gestartet wird, wird Heroku Ihre Prozesse auffordern, sich zu verschließen. Dies gibt ihnen die Möglichkeit, nette Dinge wie enge offene db-Verbindungen, etc. zu tun.
  • Wenn sich Ihr Prozess nicht innerhalb von 10 Sekunden schließt, erhalten Sie den oben genannten Fehler und Heroku wird Ihren Prozess zwangsweise beenden, um ihn erneut zu starten.

Dies wird getan, um sicherzustellen, dass keine riesige Rechnung läuft, weil einer Ihrer Prozesse irgendwie nie beendet wird.

Was in Ihrem Fall passiert (ich spekuliere hier), ist, dass Sie eine Menge offener DB-Verbindungen haben, und es dauert mehr als 10 Sekunden, um sie zu schließen, weil entweder:

  • Sie haben eine gewisse DB-Latenz.
  • Deine DB ist mit anderem Zeug belastet.
  • Ihre Anwendung kann einfach nicht viele in & lt; 10 Sekunden.

Insgesamt ist es keine große Sache. Dieses Problem löst sich im Laufe der Zeit aus, also würde ich mir keine Sorgen machen.

    
rdegges 21.11.2014, 18:52
quelle

Tags und Links