Forum: Mikrocontroller und Digitale Elektronik ESP32 Webserver Langzeitproblem


von Johannes S. (johannes_s431)


Lesenswert?

Hallo,
Momentan habe ich einen webserver mit dem ESP32 erstellt, der Daten über 
CAN ausliest und auch über webclient post Daten von anderen ESPs erhält 
und veranschaulicht. Dieser läuft nach hochladen, reseten perfekt und 
nach ca. einer Woche wird nur noch sporadisch die Main-Website aufgebaut 
und sobald ich eine untergeordnete Seite öffnen möchte, geht gar nichts 
mehr. Ich baue die Website derzeit immer komplett neu auf, also Header, 
CSS, Buttons, Skript... d.h. der zu erstellende und zu übertragende 
string ist sehr groß. Kann es daran liegen, das sich der ESP32 immer 
nach langer Zeit aufhängt? Nach reset läuft der Webserver flüssig und 
ohne Probleme. Jedoch wird doch immer nur bei Aufruf server.on 
getriggert also, wird der String doch nur selten neu geschrieben? Habe 
schon versucht über message.reserve(5000) immer den Stringbereich zu 
reservieren. Hilft jedoch nichts und da das Problem erst nach langer 
Zeit auftritt, ist das Testen neuer Verbesserungen sehr schwer. Für 
weitere Ideen wäre ich echt dankbar! Die einzige Idee, die ich noch 
habe, ist alle Variablen zwischen zu speichern und den ESP32 nach so 5 
Tagen neu zu starten. Ist aber eher eine Problemlösung als eine 
Verbesserung.
Vielen Dank für die Hilfe

von Alexander (alecxs)


Lesenswert?

Das wird wohl eher an deinem Code liegen.

von Εrnst B. (ernst)


Lesenswert?

Vermute Speicherleck.

Bau in deine Webseite eine Ausgabe von esp_get_free_heap_size()
oder ESP.getFreeHeap() ein, und schau wie sich der Wert über die Zeit 
verändert.

Wenn der Webserver sauber programmiert ist, bleibt der Wert auf lange 
Frist gesehen konstant.

von Johannes S. (johannes_s431)


Lesenswert?

Das werde ich gleich mal ausprobieren und testen. Danke

von Nemopuk (nemopuk)


Lesenswert?

Prüfe auch die Stabilität der Stromversorgung mit einem Oszilloskop.

von Rainer W. (rawi)


Lesenswert?

Nemopuk schrieb:
> Prüfe auch die Stabilität der Stromversorgung mit einem Oszilloskop.

Warum sollte ein Problem mit der Stabilität der Versorgung immer erst 
nach ca. einer Woche auftreten und den Prozessor die Seite nur 
sporadisch aufbauen lassen?
Das Thema Memory Leak oder Speicher Fragmentierung ist da schon 
naheliegender.

von Nemopuk (nemopuk)


Lesenswert?

Rainer W. schrieb:
> Warum sollte ein Problem mit der Stabilität der Versorgung immer erst
> nach ca. einer Woche auftreten und den Prozessor die Seite nur
> sporadisch aufbauen lassen?

Instabile Stromversorgung verhindert dauerhaft stabilen Betrieb. Solange 
die Stromversorgung nicht OK ist brauchst du gar nicht weiter suchen. 
Das ist ein ganz einfacher Check, dauert nur wenige Minuten.

Instabile Stromversorgung ist eine der häufigsten Problemursachen für 
sporadische Fehler. Der ESP kann damit stundenlang funktionieren und 
plötzlich fällt er doch aus.

: Bearbeitet durch User
von Lu (oszi45)


Lesenswert?

Wenn es konstant nach einer Woche zu einer bestimmten Uhrzeit auftritt, 
hat die Putzfrau den Stecker gezogen oder es ist schlecht programmiert? 
Speicherüberlauf z.B.? Baue Prüfpunkte ein.

von Nemopuk (nemopuk)


Lesenswert?

Die Software von Espressif und die Chips laufen jedenfalls inzwischen 
sehr stabil. Dort würde ich als allerletztes suchen.

: Bearbeitet durch User
von Alex Z. (alexander_z49)


Lesenswert?

Hallo,

ich hatte ein ähnliches Problem mit einen ESp32 die als Clients 
arbeiten.
Die haben sich dann auch immer nach mehreren Tagen einfach aufgehangen 
und nicht mehr mit dem Server verbunden. Meine laufen mit µPython und 
das Problem konnte ich mit den folgenend 2 Zeilen lösen:
1
micropython.alloc_emergency_exception_buf(100)
2
gc.enable()

Wenn der client die Verbindung verloren hatte oder das WLAN weg 
war,wurden die alten Instanzen nicht richtig gelöscht und der Speicher 
ist vollgelaufen.

Weiterhin darauf achten, dass nicht mehr benötigte Objekte und 
Klasseninstanzen schön gelöscht werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.