NEWS
[gelöst] Problem bei vielen zeitgleichen Zugriffen (Besonders über Proxy)
-
Moin,
ich bin dabei von ccu.io+dashui auf iobroker+vis umzusteigen (migration mit minimalen anpassungen)
Soweit funktioniert auch alles, allerdings nutze ich sehr viele tabs (teilweise verschachtelt) mit entsprechend vielen views.
Dazu kommt, dass ich ca. 8 Rickshaw-Diagramme in verschiedenen views via iframe dazu lade.
Beim direkten Zugriff auf vis kommt es selten aber reproduzierbar zu Fehlern bei der Anzeige der Diagramme (Leere Seite oder Keine Verbindung zum Server), welche tlw. auch dazu führt, dass die gesamte View "abstürzt" (ebenfalls mit Keine Verbindung zum Server).
Verstärkt wird das Thema beim externem Aufruf über Apache2 als Reverse-Proxy.
Zur Konfigration:
-Debian 8
-Apache und Node.js aus debian-repo
-aktuell iobroker und web ohne ssl und ohne auth um diese als Fehlerquellen auszuschließen (Authentifizierung über Apache, wobei auch komplettes abschalten nichts ändert)
Rewrite (Parameter oben sind aktueller Spielstand, wobei bisher lediglich retry=0 positive Auswirkungen hat, auch komplette ohne Parameter wird es nicht besser)
ProxyPass / http://192.168.100.1:8082/ status=+i timeout=1200 retry=0
ProxyPassReverse / http://192.168.100.1:8082/
Für mich sieht es aus, als wenn das Problem zwar durch Apache verstärkt wird aber dort nicht direkt zu suchen ist. Aus Sicht vom Apache-Log stellt es sich folgendermaßen dar:
Beispiel:
[proxy_http:error] [pid 19372] (20014)Internal error: [client BLA1:55317] AH01102: error reading status line from remote server 192.168.100.1:8082, referer: http://BLA2/rickshaw/index.html?range=1 … B%236060c0
Gibt es sinnvolle Ansatzpunkte das Problem anzugehen? Im Log von iobroker gibt trotz Debug-Level keine für mich erkennbaren Hinweise
-
Ich glaube nicht, dass Express Web Server die Seiten nicht schnell genug liefern kann. Aber es kann sein, dass die Grafiken einfach zu viel brauchen.
Man konnte probieren die Web Seiten und die seiten auseinander trennen. Z.B. eine zweite Instanz von Web anlegen und über die dann nur die Grafiken liefern.
-
was genau meinst du mit grafiken? Die Diagramme oder statische Bilder?
Ich habe nun alle rickshaw-Zugriffe über eine zweite Instanz umgebogen:
ProxyPass /rickshaw/ http://192.168.100.1:8083/rickshaw/ retry=0
ProxyPassReverse /rickshaw/ http://192.168.100.1:8083/rickshaw/
ProxyPass / http://192.168.100.1:8082/ retry=0
ProxyPassReverse / http://192.168.100.1:8082/
ändert leider auch nichts
-
Hab es nun hin. Der Websocket muss auf der gleichen web-server instanz von rickshaw laufen. Nun klappt alles und bisher schmiert nichts ab
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:8083/$1 [P,L]
ProxyPass /socket.io http://localhost:8083/socket.io
ProxyPassReverse /socket.io http://localhost:8083/socket.io
ProxyPass /rickshaw/ http://192.168.100.1:8083/rickshaw/ retry=0
ProxyPassReverse /rickshaw/ http://192.168.100.1:8083/rickshaw/
ProxyPass / http://192.168.100.1:8082/ retry=0
ProxyPassReverse / http://192.168.100.1:8082/
-
Kann man das als gelöst bezeichnen?
-
ja, ist gelöst. läuft durchgehend stabil