[gelöst] FHEM stürzt ab bei Webaufruf von Room mit mehreren Plots (98_SVG.pm)

Begonnen von sumsum, 24 Januar 2021, 18:13:19

Vorheriges Thema - Nächstes Thema

sumsum

Hallo,

ich habe gestern ein update gemacht. Alles lieft erstmal OK. Leider stürzt FHEM beim Aufruf vom rooms auf wo mehrere Plots sind. Einige Plots werden noch angezeigt, aber das Laden endet nie.
Im Log ist kein Hinweis zusehen.
Ein top zeigt zum Zeitpunkt viele fhem Einträge.

Mein System:

RPI3, logdb.

Ich konnte den Fehler schon etwas einkreisen.
Wenn ich aus dem Backup das alte 98_SVG.pm (# $Id: 98_SVG.pm 22703 2020-08-31 16:21:08Z rudolfkoenig $) einspiele, tritt der Fehler nicht auf.

Konnte allerdings nur 2 Änderungen von der alten zur neuen Version finden:
alt:
sub
SVG_embed()
{
  return AttrVal($FW_wname, "plotEmbed", 0);
}

neu:
sub
SVG_embed()
{
  return AttrVal($FW_wname, "plotEmbed", ($numCPUs>1 ? 2:0));
}



und in der sub SVG_doShowLog($$$$;$) alt:
my $msg = ($err ? $err : "No Logdevice >$d<");

neu:
my $msg = ($err ? $err : "No Logdevice /$d/");

Top bei normalem Betrieb:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
21634 fhem      20   0  147316 133376  10064 S   5.0  13.4   1:35.08 perl
21762 fhem      20   0   96976  52152   5040 S   1.3   5.2   0:05.49 perl
32743 mysql     20   0  740732 169068   6684 S   1.0  16.9   5:04.87 mysqld
21645 root      20   0   10696   3292   2688 R   0.7   0.3   0:01.36 top


Top bei Aufruf von Room mit vielen Plots:

23308 fhem      20   0  147620 133756  10272 R  40.8  13.4   1:35.68 perl
22481 mysql     20   0  725324 101960  15780 S  25.2  10.2   0:02.72 mysqld
23798 fhem      21   1  146980 128724   5824 R  21.6  12.9   0:00.66 perl
23804 fhem      21   1  147556 129168   5688 R  16.7  12.9   0:00.51 perl
23800 fhem      21   1  147556 129168   5688 R  12.1  12.9   0:00.37 perl
23797 fhem      21   1  147556 129252   5688 R  11.1  13.0   0:00.34 perl
23802 fhem      21   1  147556 129168   5688 R  10.8  12.9   0:00.33 perl
23807 fhem      21   1  147556 129164   5688 R   5.6  12.9   0:00.17 perl
23806 fhem      21   1  147556 129168   5688 R   4.9  12.9   0:00.15 perl
   61 root      20   0       0      0      0 S   2.6   0.0  11:33.12 kswapd0
23808 fhem      21   1  147400 126996   3528 R   2.3  12.7   0:00.07 perl
23455 fhem      20   0   96936  52312   5056 S   2.0   5.2   0:05.12 perl
23796 fhem      21   1  147400 126756   3288 S   1.6  12.7   0:00.05 perl
23761 root      20   0   10696   3200   2604 R   1.0   0.3   0:00.16 top



Habe nicht so richtig "Beschwerden" anderer hier im Forum gefunden. Habe nur ich das Problem?
Mein Gefühl ist, der Pi geht in 100% CPU und der Kernel schiesst dann einzelne Prozesse ab.

Gibt es etwas, was ich in der Docu übersehen habe?

Gruss

Ulf

Stelaku


sumsum

Dank für die schnelle Antwort.

Leider bringt es bei mir keinen Erfolg. Komisch das ich deinen Eintrag vorher nicht gefunden habe.

rudolfkoenig

ZitatLeider bringt es bei mir keinen Erfolg.
Dann ist die Ursache des Problems nicht gezeigte Aenderung.
Ich vermute eher, dass das Attribut nicht richtig gesetzt wurde.


sumsum

Hallo Rudolf
Hier ein list WEB

Internals:
   BYTES_READ 0
   BYTES_WRITTEN 0
   CONNECTS   2
   CSRFTOKEN  csrf_206915374852858
   DEF        8083 global
   FD         6
   FUUID      5c483703-f33f-347b-a828-fea530fcbdee961f
   NAME       WEB
   NR         10
   NTFY_ORDER 50-WEB
   PORT       8083
   SSL        1
   STATE      Initialized
   TYPE       FHEMWEB
   READINGS:
     2021-01-24 18:28:38   state           Initialized
Attributes:
   HTTPS      1
   JavaScripts pgm2/hm.js
   editConfig 1
   endPlotNow 1
   fwcompress 0
   hiddenroom Unsorted
   menuEntries CodeImport,/fhem?detail=Import#
   plotEmbed  0
   roomIcons  Sonos:sonos_play1 Arbeitszimmer:scene_workshop Terasse:scene_terrace Trockenraum:scene_laundry_room Spielzimmer:scene_childs_room Bad:scene_bathroom Eingang:scene_keyboard Heizung:sani_heating Kinderzimmer:scene_sleeping Kueche:scene_cooking Licht:icoLicht Schlafzimmer:scene_sleeping Wohnzimmer:scene_livingroom System:edit_settings Rollo:fts_shutter Treppe:scene_stairs Alarmanlage:status_locked Aussen:weather_sunset Flur:scene_hall Sicherheit:security Verbrauch:time_graph Anwesenheit:status_available G..stezimmer:scene_sleeping_alternat Fenster.und.T..ren:fts_shutter
   styleData  {
"f18": {
  "Pinned.menu": "true",
  "cols.bg": "FFFFE7",
  "cols.fg": "000000",
  "cols.link": "278727",
  "cols.evenrow": "F8F8E0",
  "cols.oddrow": "F0F0D8",
  "cols.header": "E0E0C8",
  "cols.menu": "D7FFFF",
  "cols.sel": "A0FFFF",
  "cols.inpBack": "FFFFFF",
  "savePinChanges": true,
  "hideLogo": false,
  "hideInput": false,
  "hidePin": false,
  "wrapcolumns": false
}
}
   stylesheetPrefix ios7



Das Attribut ist gesetzt.

Welche nicht gezeigte Änderung meinst du?

Fehlt mir vielleicht noch ein anderes Attribut?


rudolfkoenig


sumsum

Gemacht. (mit systemctl stop fhem && systemctl start fhem)

Das Probelm besteht leider weiter.

ps ax | grep perl
1968 ?        DN     0:02 perl fhem.pl fhem.cfg
1969 ?        DN     0:02 perl fhem.pl fhem.cfg
1970 ?        DN     0:02 perl fhem.pl fhem.cfg
1971 ?        DN     0:02 perl fhem.pl fhem.cfg
1974 ?        DN     0:02 perl fhem.pl fhem.cfg
1975 ?        DN     0:02 perl fhem.pl fhem.cfg
1994 pts/0    S+     0:00 grep perl

sumsum


{AttrVal("WEB", "plotEmbed", 99)}

liefert 0.


{SVG_embed()}
liefert 2.

Verstehe ich nicht so richtig. Dachte, dass AttrVal den Attributwert liefert und wenn das Attribut nicht existiert den letzten Wert also ($numCPUs>1 ? 2:0).



rudolfkoenig

Nach etwas code-Pruefen / nachdenken / testen:
- das Zurueckstellen von SVG.pm duerfte nicht reichen, FHEMBWEB sorgt ab der Umstellung der Voreinstellung auf plotEmbed=2 dafuer, dass die SVG-Berechnung  die parallelen Prozesse fuer die Berechnung forkt. SVG rendert nur das Ergebnis anders (mit/ohne embed/svg tags)
- das Setzen dieses Attributes ist gleichwertig mit der alten Voreinstellung.
- ich habe das mit einer Testinstallation geprueft: per default wird geforkt, nach plotEmbed 0 nicht mehr.

{SVG_embed()} liefert 2.
SVG_embed liefert das plotEmbed Attribut fuer die zuletzt verwendete FHEMWEB Instanz.
Womoeglich gibt es mehrere FHEMWEB Instanzen?

sumsum

Das war es. Ich hatte noch eine WEBphone Instanz. Dort habe ich auch das Attribut gesetzt und schon geht es.  ;D
Also zusammengefasst es muss das Attribut in allen FHEMWEB Instanzen gesetzt werden.

Vielen Dank für die schnellen Antworten.