So vermeiden Sie einen Neustart des Apache-Proxys beim Neustart von CouchDB

12

Ich führe eine localhost CouchDB-Instanz mit CouchDBX auf meinem Mac aus, die mit der folgenden ProxyPassAnweisung hinter Apache 2 Proxy-Server ist :

<VirtualHost *:80>
    ServerName playlick # points to localhost in /etc/hosts
    DocumentRoot "/Users/james/Sites/playlick"
    ProxyPass /data http://localhost:5984
    ProxyPassReverse /data http://localhost:5984
</VirtualHost>

Wenn ich versuche , auf meine Couch Instanz zu treffen , http://playlick/datawährend es nicht läuft ich einen bekommen 503 Service vorübergehend nicht verfügbar Fehler, wie zu erwarten wäre.

Ich starte dann den Couch-Server und drücke die gleiche URL, erhalte aber immer noch den Fehler, bis ich den Apache-Proxy neu starte.

Wenn ich andererseits die Couch-Instanz starte, bevor ich auf diese URL treffe, funktioniert alles einwandfrei, ohne Apache berühren zu müssen.

Es sieht also so aus, als ob der 503-Fehler zwischengespeichert wird, bis der Apache-Prozess neu gestartet wird. Wie kann ich das verhindern?

ODER , falls dies nicht möglich ist, wie kann ich den Neustart von Apache erzwingen, wenn ich die Couch-Instanz in der CouchDBX-GUI-App starte?

James Wheare
quelle
Wie um alles in der Welt sind Sie jemals dazu gekommen, dass / data richtig funktioniert? Ich versuche immer "Datei existiert nicht: [DocumentRoot] / _all_dbs, referer: localhost / data / _utils / index.html ". Es sieht so aus, als ob es Probleme in jquery.couch.js gibt, weil sie auf "/ _all_dbs" verweisen und das Entfernen von "/" den obigen Fehler als relativ zu _utils erscheinen lässt, aber ist dies wirklich ein Fehler oder gibt es etwas anderes, das ich habe konfigurieren?
Nicerobot

Antworten:

15

Ich glaube, was Sie sich ansehen müssen, ist die Wiederholungsoption, die Sie mit der ProxyPass- Direktive übergeben können.

Standardeinstellung für Wiederholung : 60 Sekunden

Wiederholungszeitlimit für Verbindungspool-Worker in Sekunden. Befindet sich der Verbindungspool-Worker zum Back-End-Server im Fehlerstatus, leitet Apache keine Anforderungen an diesen Server weiter, bis das Zeitlimit abgelaufen ist. Dadurch kann der Back-End-Server zur Wartung heruntergefahren und später wieder online geschaltet werden. Der Wert 0 bedeutet, dass Worker in einem Fehlerzustand ohne Zeitüberschreitung immer erneut versucht werden.

Zoredache
quelle
4
Perfekt. Das hat es geschafft: ProxyPass / data localhost: 5984 retry = 0
James Wheare
1
Das gleiche Problem wurde auch für node.js Apache Passthrough behoben.
Will Shaver