Here's a little code that might help you.
cat(paste0("Session started @ ", now(), ".\n"))
onSessionEnded(function() {
cat(paste0("Session ended @ ", now(), ".\n\n"))
})
Add this near the top of your shiny server function. It will add lines to the shiny server log when a session starts and ends and shed a tiny bit of light on what the server thinks is going on.
now() is a function in the lubridate package. If you're not loading that you can substitute R's Sys.time(), I think.
You don't have a stopApp() function anywhere in your code, do you?
Tom