Bruce>Yes, it would impact applications and you are right most applications could not handle that cleanly.
I would disagree here. We are discussing applications that produce "lots of idle" connections, aren't we? That typically comes from an application-level connection pool. Most of the connection pools have a setting that would "validate" connection in case it was not used for a certain period of time. That plays nicely in case server drops "idle, not in a transaction" connection. Of course, there are cases when application just grabs a connection from a pool and uses it in a non-transacted way (e.g. does some action once an hour and commits immediately). However that kind of application would already face firewalls, etc. I mean the application should already be prepared to handle "network issues". Bruce> It is probably better to look into Bruce>freeing resources for idle connections instead and keep the socket open. The application might expect for the session-specific data to be present, so it might be even worse if the database deallocates all the things but TCP connection. For instance: application might expect for the server-prepared statements to be there. Would you deallocate server-prepared statements for those "idle" connections? The app would just break. There's no way (currently) for the application to know that the statement expired unexpectedly. Vladimir