Frage

Ich verwende Einhorn und versuche, dass keine Neustarts ohne Ausfallzeiten funktionieren.

Bisher ist alles eine großartige Sauce, der Master-Prozess gabelt und startet 4 neue Arbeiter, tötet dann den alten, alle sind glücklich.

Unsere Skripte senden den folgenden Befehl, um das Einhorn neu zu starten:

kill -s USR2 `cat /www/app/shared/pids/unicorn.pid`

An der Oberfläche sieht alles gut aus, aber es stellt sich heraus, dass das Einhorn die Produktion nicht neu lädt.(Bei jeder Bereitstellung ändern wir den config.action_controller.asset_host-Wert in einen neuen CDN-Container-Endpunkt mit unseren vorkompilierten Assets.)

Nach dem Neustart von unicorn auf diese Weise zeigt der Asset-Host weiterhin auf die alte Version.Bei einem echten Neustart (dh: Stoppen Sie den Master-Prozess und starten Sie das Einhorn erneut von vorne) werden die neuen Konfigurationsänderungen übernommen.

preload_app ist in unserer Einhorn-Konfigurationsdatei auf true gesetzt.

Irgendwelche Gedanken?

War es hilfreich?

Lösung

Ich vermute, dass Ihre Einhörner im alten Produktionsverzeichnis und nicht im neuen Produktionsverzeichnis neu gestartet werden. Mit anderen Worten, wenn Ihr Arbeitsverzeichnis in unicorn.rb <capistrano_directory>/current ist, müssen Sie sicherstellen, dass der Symlink vor Ihnen erfolgtVersuchen Sie, die Einhörner neu zu starten.

Dies würde erklären, warum das manuelle Stoppen und Starten funktioniert: Sie führen diese Nachbereitstellung vermutlich aus, wodurch sie im richtigen Verzeichnis gestartet werden.

Wenn Sie in Ihrem Bereitstellungsprozess die Einhörner neu starten?Sie sollten sicherstellen, dass das USR2-Signal gesendet wird, nachdem das neue Release-Verzeichnis als aktuell verknüpft wurde.

Wenn dies nicht hilft, geben Sie bitte Ihre unicorn.rb und deploy.rb an.Dies erleichtert das Debuggen dieses Problems erheblich.

Andere Tipps

Beachten Sie Folgendes: Ihr Arbeitsverzeichnis in unicorn.rb sollte sein: / your / cap / directory / current

NICHT sein: File.expand_path ("../ ..", DATEI )

Weil der Einhorn- und Linux-Softlink-Forking-Fehler: Softlink nicht gut funktioniert.

zum Beispiel:

cd current #current ist ein Softlink zu einem anderen Verzeichnis

... ...

Wenn wir unser Arbeitsverzeichnis erhalten, erhalten wir den absoluten Pfad, nicht den Pfad in "aktuell"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top