2012-10-21 6 views
5

Angenommen, ich ändere meine Rails-App etwas, z. B. das HTML-Layout. Wie würde ich einen rollenden Neustart mit Unicorn machen? Effektiv möchte man Einhorn-Prozesse (oder Arbeiter statt?) Für die neueste Version der App rails aufrufen und dann den Verkehr von den alten Einhorn-Prozessen/-Arbeitern atomar auf die neuen umstellen. Von Google-Suchen konnte ich nicht wirklich eine konkrete definitive Erklärung bekommen, wie man dies und all die damit verbundenen Schwierigkeiten macht.Wie macht man einen Neustart mit Unicorn?

Antwort

5

Es gibt mehrere Methoden, aber einer von ihnen ist wie folgt:

  • Senden SIGUSR2 an den Master-Prozess. Unicorn startet einen neuen Master mit Worker-Prozessen, die parallel zu Ihren alten Master- und alten Worker-Prozessen ablaufen.
  • Warten Sie, bis die neuen Master- und Worker-Prozesse gestartet wurden.
  • Töte den alten Meister.

Quelle: http://unicorn.bogomips.org/SIGNALS.html

Dies ist allerdings nicht sehr speicherfreundlich. Sie benötigen vorübergehend die doppelte Speicherbelegung.

Phusion Passenger Enterprise unterstützt rollende Neustarts (zusammen mit anderen coolen Funktionen), aber es startet Prozesse einzeln neu und benötigt daher nicht so viel Speicher. Es ist möglich, in Unicorn mit den TTIN- und TTOUT-Signalen einzelne Rolling-Neustarts zu scripten, aber Phusion Passenger macht alles automatisch für Sie ohne Scripting.