Hallo AMAD User,
Ich benötige mal kurz Euro Hilfe. Mich würde interessieren wie viele Androidgeräte Ihr mit AMAD eingebunden habt? Grund ist das ich sporadisch seit einiger Zeit Fehler in der Form "can't write, to many open files" bekomme und das bei den Devices FHEMweb FHEMwebmobil und AMADCommBridge. Also alles was mit sockets zu tun hat.
Ich bilde mir ein das die Bridge irgendwann zu viele Clientsockets aufgemacht hat. Konnte das aber noch nicht genau feststelle.
Ich selbst habe 9 Geräte. Dazu habe ich bei 3 Tablets FHEMWebmobil und bei 2 Tablets zusätzlich FHEMweb offen.
Grüße
Leon
Erster Schritt: "lsof -p FHEM_PROZESS"; das zeigt dir, wer da seine Sockets/Dateien/etc. nicht korrekt schließt.
Vielen Dank. Ist bekannt. Bin nur noch nicht dazu gekommen ;D
Grüße
Kurz. Falls da noch wer liest.
lsof -p FHEM_PROZESS
ls -all /proc/FHEM_PROZESS/fd
Und damit man nicht erst unnötig die FHEM PID suchen muss
lsof -p $(ps -ef | grep "fhem.pl" | grep -v grep | awk '{print $2}')
Und ich brauche nur die TCP Sockets
lsof -p $(ps -ef | grep "fhem.pl" | grep -v grep | awk '{print $2}') | grep TCP
Hallo Marko,
ich hatte das Problem vor kurzem auch und zwar mit nur einem Androidgerät. Tatsächlich war AMAD2 verantwortlich, was man nicht direkt rausfinden konnte, da die Filedeskriptoren fhem.pl zugeordnet sind.
Daher hatte ich mir auf Rudis Tipp aufbauend ein Skript geschrieben, das regelmäßig die FDs und die zugehörigen Module wegschreibt:
#!/bin/bash
while [ 1 ]; do
echo -e '\n\n--------------------------------------------------' >> /tmp/fdlog
date >> /tmp/fdlog
echo -e "\nlist .* FD\nquit\n"|nc localhost 7072|awk '/Bye.../ {next} NR >=8 {print}'|tee -a /tmp/fdlog
sleep 1m
done
Die weggeschriebenen FDs konnte man dann im Nachhinein nutzen, um Ausgabe von lsof auf einzelne Module zurückzuführen.
Das Problem verschwand, als ich das Tablet auf das aktuelle Flowset aktualisierte.
Im übrigen sehr nett wenn man dank der verbrauchten Filedeskriptoren nichtmal mehr auf das WebGUI oder telnet kommt, um FHEM sauber neuzustarten...
Patrick
Hallo Patrick,
Ich habe es im Moment t so gemacht das ich alle 10 min ein losf -p FHEM-PID wegschreibe.
#!/bin/bash
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME >> /root/TcpSocketList.txt
lsof -p $(ps -ef | grep "fhem.pl" | grep -v grep | awk '{print $2}') | grep TCP >> /root/TcpSocketList.txt
exit 0
Grüße
Nach vielen hin und her und überlegen habe ich meinen Designfehler erkannt. Habe auch schon eine Idee wie ich es besser machen kann. Frage ist nur ob es Automagic so mit macht. Wird aber 2-3 Wochen dauern.
Grüße
WICHTIG!!!
Neue Infos (https://forum.fhem.de/index.php/topic,50108.msg463511.html#msg463511)