[Gelöst] Ungeplante Fhem-Neustarts

Begonnen von Gisbert, 10 September 2022, 15:07:46

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo zusammen,

vielen Dank, dass eine wahrscheinliche Ursache gefunden wurde, zumindest aber vermutet wird.
Ich hab das entsprechende Device vorerst disabled, würde aber auch gerne den cpanel fork probieren.
Was muss ich dazu tun?

Cpanel::JSON::XS installieren - das krieg ich wohl hin.
use Cpanel::JSON::XS; im JsonModModul eintragen? Wenn ja, dann denke ich, krieg ich das auch hin.
Bitte um Bestätigung.

Vielen Dank und viele Grüße
Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

rudolfkoenig

Kann nicht viel zum Ersatz-Modul sagen, aber Folgendes koennte bis zum Fix als "Drop In Replacement" fuer die Definition dienen:

define coronaSpreadNRW at +*01:00 {\
  HttpUtils_NonblockingGet({\
url=>"https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/Coronaf%C3%A4lle_in_den_Bundesl%C3%A4ndern/FeatureServer/0/query?where=1%3D1&outFields=LAN_ew_GEN,Fallzahl,Aktualisierung,faelle_100000_EW,cases7_bl_per_100k,Death&returnGeometry=false&outSR=4326&f=json",\
    callback=>sub(){\
      return Log 1, "coronaSpreadNRW: $_[1]" if($_[1]);;\
      $_[2] =~ m/({"LAN_ew_GEN":"Nordrhein-Westfalen",[^}]*})/;;\
      json2reading($defs{coronaSpreadNRW}, $1, undef, {\
        cases7_bl_per_100k=>"0_RKI7",\
        Fallzahl=>"0_cases",\
        Death=>"0_deaths",\
        Aktualisierung=>"0_lastUpdate",\
        faelle_100000_EW=>".computedReadings",\
        LAN_ew_GEN=>"0_name"})\
    }})\
}


Die Attribute (bis auf readingList) sollte man ohne Aenderung uebernehmen koennen.

Gisbert

Danke, habs umgesetzt, die Attribute ergänzt, und es funktioniert.
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Gisbert

Hallo zusammen,

hier ein kurzes Update nach einer Woche Laufzeit:

  • Ich hab das JSONMod-Device disabled und stattdessen die Definition von Rudi benutzt.
  • Es gab keinen Fhem-Crash in dieser Woche mehr!
  • global verbose 5 kurz vor und nach einer vollen Stunde hab ich wieder abgestellt, (d.h. jetzt ist verbose 3).
  • Ich hab die Anzahl der Events drastisch reduziert, mithilfe von DOIFTools. Das Attribut event-on-change-reading habe ich selektiv auf die notwendig erscheinenden Readings angewandt. Teilweise bin ich über's Ziel rausgeschossen, da Automatisierungen wegen fehlender Events nicht mehr funktionierten, oder Plot-Abrisse in Diagrammen auftraten. Das ließ sich aber im Einzelfall leicht beheben.
  • Den swappiness-Wert habe ich dauerhaft auf 20 gesetzt. Am Ende der Woche lag der RAM-Verbrauch meiner 4GB bei 80-85% und die Swap-Datei war mit ca. 1 GB belegt (in Prozent: 25-30%).
Insgesamt sehe ich die Aktion sehr positiv und möchte mich herzlich bei allen bedanken, die mir mit ihren Ratschlägen oder Ideen geholfen haben.

Wie seht ihr die Situation beim RAM? Ist das etwas, was nicht schön, aber auch nicht dramatisch ist, also hingenommen werden kann? Wenn nein, würde ich auf 8 GB aufrüsten. Den Speichertyp werde ich wohl herausfinden, aber es gibt da immer verschiedene Frequenzen. Was muss ich da beachten? Kann ich auch Speicher einsetzen, die über der Mindestfrequenz liegen?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

rudolfkoenig

ZitatWie seht ihr die Situation beim RAM?
Haengt davon ab, wie das 85% berechnet wurde.
Anhand der Ausgabe von free:
- (total-free)/total*100 => unkritisch.
- used/total*100 => eher ein Problem.

Gisbert

Hallo Rudi,

nach dem Server-Neustart hab ich jetzt folgendes im SYSMON-Device:
ram Total: 3396.66 MB, Used: 2066.33 MB, 60.83 %, Free: 480.41 MB
60% = Used/Total
Wie gesagt hatte ich vor dem Serverstart ca. 85%. Mit anderen Worten dann eher ein Problem.

Damit wäre ich wieder bei der Frage nach der Frequenz der Speicherbausteine.

sudo dmidecode --type 17
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0008, DMI type 17, 34 bytes
Memory Device
        Array Handle: 0x0005
        Error Information Handle: Not Provided
        Total Width: Unknown
        Data Width: 64 bits
        Size: No Module Installed
        Form Factor: DIMM
        Set: None
        Locator: DIMM2
        Bank Locator:
        Type: Unknown
        Type Detail: Synchronous
        Speed: Unknown
        Manufacturer:
        Serial Number:
        Asset Tag:
        Part Number:
        Rank: Unknown
        Configured Memory Speed: Unknown

Handle 0x000A, DMI type 17, 34 bytes
Memory Device
        Array Handle: 0x0005
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 4 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM1
        Bank Locator:
        Type: DDR3
        Type Detail: Synchronous
        Speed: 800 MT/s
        Manufacturer: Hynix Semiconduc
        Serial Number: 0132AC3A
        Asset Tag:
        Part Number: HMT451S6AFR8A-PB
        Rank: 1
        Configured Memory Speed: Unknown


Unter Speed steht "Speed: 800 MT/s" = 800 MHz ?
Kann ich auch bedenkenlos welche mit 1600 MHz reinpacken?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Wernieman

Teoretisch solltest Du es können, aber Praktisch ..... weißt Du, was für Speicherriegel "drin" steckt? Viel interessanter wäre die "Stromversorgung", also die Spannung.

Laut Google nach der "Part-Number" sind es "Low Voltage" .. also in der Richtung gucken.

Hinweis: Alle Angaben ohne Gewähr!

Unabhängig davon:
Mich würde eine Auslastung über 80% Nervös machen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Gisbert

Hallo zusammen,

ich hab heute einen zweiten 4 GB-Speicher eingebaut. Selbst vom gleichen Hersteller sehen die von außen nicht identisch aus.
sudo dmidecode --type 17
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0008, DMI type 17, 34 bytes
Memory Device
        Array Handle: 0x0005
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 4 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM2
        Bank Locator:
        Type: DDR3
        Type Detail: Synchronous
        Speed: 800 MT/s
        Manufacturer: Hynix Semiconduc
        Serial Number: 41CA7A57
        Asset Tag:
        Part Number: HMT351S6EFR8C-PB
        Rank: 2
        Configured Memory Speed: Unknown

Handle 0x000A, DMI type 17, 34 bytes
Memory Device
        Array Handle: 0x0005
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 4 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM1
        Bank Locator:
        Type: DDR3
        Type Detail: Synchronous
        Speed: 800 MT/s
        Manufacturer: Hynix Semiconduc
        Serial Number: 0132AC3A
        Asset Tag:
        Part Number: HMT451S6AFR8A-PB
        Rank: 1
        Configured Memory Speed: Unknown


Ich hab bei der Gelegenheit auch mal einen Bildschirm und Tastatur angeschlossen und ins BIOS (F10) geschaut. Mir ist da aber nichts aufgefallen, kenne ich mich aber auch nicht sonderlich gut aus, als dass ich versucht hätte, etwas zu ändern.

Der Server läuft wieder, jetzt mit geschmeidigen 8 GB RAM.
Ansonsten hab ich ganz viel dazu gelernt, wie man unnötige Events vermeidet.

Vielen Dank nochmals an alle, die mir geholfen haben.
Viele Grüße
Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Wernieman

Und wie sieht jetzt die Speicherbelastung aus?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Gisbert

Hallo Wernieman,

beim Serverstart waren es gut 25% der 8GB, jetzt ein paar Stunden später sind es knapp 30%. Ich denke, dass es nach und nach noch auf 40 bis max. 50% steigen wird.

Operation gelungen.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Wernieman

Wobei 40-50% bei 8G auch schon "nicht wenig" sind.

Mein Homeserver, der neben Hausautomatisation (FHEM) auch Mail (incl. Scan), Monitoring, Pi-Hole, Zentraler Logserver, Gut geboosterte Datenbank, etc. macht, hat trotz 16G *) aktuell 5G "gefüllt" (incl. Cache). Dass währe bei Deinem 8G Rechner c.a. 60% (Wenn ich mich nicht verschätzt habe, zu faul zum rechnen ;) )

Insofern wüste ich gerne, wo der Speicher bei Dir "verfressen" wird ...





*) die 16G hat er auch nur, da es zu Zeitpunkt einfach "günstig" war und ich es einfach ausprobieren wollte .... offiziell darf er nur 8G  8)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Gisbert

Hallo Wernieman,

der Unifi-Controller braucht von den 8 GB 12.5%, RHASSPY benötigt auch etwas, Pi-Hole, ubound, FHEM und jede Menge Services mit Zehntel-Prozentanteilen.

Nach dem Serverstart laufen ja alle Services und verbrauchen etwa 25%. Danach nehmen sie immer mehr Speicher in Beschlag, ohne ihn später wieder freizugeben.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Wernieman

Ich frage mich wirklich, was der Unifi-Controlle damit macht .... aber dann nicht zu ändern ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MadMax-FHEM

@Gisbert: was hast du denn für eine Netzwerk-Infrastruktur?

Ich habe aktuell 1x USG3, 1x 8Port POE Switch, 3x AP, 4x Flex Mini Switch und daran hängen ca. 50 Clients die Meisten per WLAN (6-8 per Kabel)...

Und ich habe einen Speicherverbrauch (laut top) von Unifi Controller und Mongo-DB von ca. 500MB...
...hatte ich ja schon mal geschrieben: https://forum.fhem.de/index.php/topic,129113.msg1234492.html#msg1234492

Läuft neben smb, pihole/bind, tftp, openvpn auf einem PI4 mit 4GB...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Gisbert

Hallo Rudi,

ich hab die angehängte Defintion im Einsatz; der Name lautet sub_coronaSpreadNRW, wobei das sub auf Sustitution eines nicht mehr funktionalen JSMOD-Devices hindeutet:
defmod sub_coronaSpreadNRW at +*04:00 {\
  HttpUtils_NonblockingGet({\
url=>"https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/Coronaf%C3%A4lle_in_den_Bundesl%C3%A4ndern/FeatureServer/0/query?where=1%3D1&outFields=LAN_ew_GEN,Fallzahl,Aktualisierung,faelle_100000_EW,cases7_bl_per_100k,Death&returnGeometry=false&outSR=4326&f=json",\
    callback=>sub(){\
      return Log 1, "sub_coronaSpreadNRW: $_[1]" if($_[1]);;\
      $_[2] =~ m/({"LAN_ew_GEN":"Nordrhein-Westfalen",[^}]*})/;;\
      json2reading($defs{sub_coronaSpreadNRW}, $1, undef, {\
        cases7_bl_per_100k=>"0_RKI7",\
        Fallzahl=>"0_cases",\
        Death=>"0_deaths",\
        Aktualisierung=>"0_lastUpdate",\
        faelle_100000_EW=>".computedReadings",\
        LAN_ew_GEN=>"0_name"})\
    }})\
}
attr sub_coronaSpreadNRW alignTime 00:00:00
attr sub_coronaSpreadNRW event-on-update-reading .computedReadings
attr sub_coronaSpreadNRW stateFormat {my $ret .= "last RKI CoViD-19 check<br/>on ";;\
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))))."<br/>";;\
$ret .= "RKI7: <font style=\"color:#147bff;;\">".round(ReadingsVal($name,"0_RKI7","-"),1)."</font><br/>";;\
$ret .= "F&auml;;lle: <font style=\"color:#147bff;;\">".ReadingsVal($name,"0_cases","-")."</font><br/>";;\
$ret .= "Tote: <font style=\"color:#147bff;;\">".ReadingsVal($name,"0_deaths","-")."</font>";;\
return $ret;;}
attr sub_coronaSpreadNRW userReadings 0_lastUpdatedh {POSIX::strftime ("%d.%m. %H:%M", localtime(ReadingsVal($name,"0_lastUpdate",0)/1000));;}, 1_lastUpdatedh {POSIX::strftime ("%d.%m. %H:%M", localtime(ReadingsVal($name,"1_lastUpdate",0)/1000));;}


Im state steht nicht Sinnvolles drin.
Beim Serverstart steht im logfile das folgende:
2023.03.12 14:16:40.814 1: PERL WARNING: Argument "-" isn't numeric in sprintf at .//FHEM/99_Utils.pm line 242, <$fh> line 129.
2023.03.12 14:16:40.814 3: eval: my $ret .= "last RKI CoViD-19 check<br/>on ";
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))))."<br/>";
$ret .= "RKI7: <font style=\"color:#147bff;\">".round(ReadingsVal($name,"0_RKI7","-"),1)."</font><br/>";
$ret .= "Fälle: <font style=\"color:#147bff;\">".ReadingsVal($name,"0_cases","-")."</font><br/>";
$ret .= "Tote: <font style=\"color:#147bff;\">".ReadingsVal($name,"0_deaths","-")."</font>";
return $ret;


Die URL liefert Daten, daran kann es nicht liegen.
Es hat ja schon mal funktioniert, jetzt aber nicht mehr.
Kannst du dir es bei Gelegenheit anschauen?

Viele Grüße und vielen Dank
Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY