Look at the example I already gave above… basically, after WiFi, Blynk setup and initial Blynk connection, this keeps everything Blynk related running, when connected to the server as normal…
if (Blynk.connected()) { // If connected run as normal
Blynk.run();
} else {
// The loop will keep doing stuff whilst occasionally attempting reconnection with whatever code you put here
}
Then with an ELSE addition, one can experiment with the best way of carrying on with the code and occasionally attempting a connection to Blynk Server. But don’t keep repeatedly hammering at the reconnection, as that process itself can take some time away from running the regular code
Yup, I also have an ESP32 (TTGO32+OLED+18650) running 24/7 with temp, humidity & barometer sensor, running a Nexion display, plus its own OLED and also feeding data back to a static wall display.
Sometimes it runs for days without any issues, other times it seems to stall out a few times a day, requiring a manual reset… no apparent rhyme or reason.
Now, mine is NOT running Blynk for its project (although it was at one time) and even then it still has the same flakiness… so it might just be an ESP32 core thing?? I can’t recall the core version I had when last flashing it.
I also have some rudimentary “reboot when locked up” code, but it doesn’t seem to work, or perhaps the aforementioned ESP.restart();
doesn’t to do the job… or at least not always?? I never got around to displaying any diagnostics, or uptime counters… One day 
Meanwhile, it is one of life’s mysteries I guess 