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
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.
Prüfe auch die Stabilität der Stromversorgung mit einem Oszilloskop.
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.
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
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.
Die Software von Espressif und die Chips laufen jedenfalls inzwischen sehr stabil. Dort würde ich als allerletztes suchen.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.