It is 100% true. But the users can do strange things. If we solve idle transactions and not idle session, then they are able to increase max_connections to thousands with happy smile in face.
I have not strong idea about how to solve it well - maybe introduce transaction_idle_timeout and session_idle_timeout?
What exactly do we want to define session_idle_timeout? Some
possibilities:
a. Reset the session related variables like transaction, prepared
statements, etc. and retain it for connection pool kind of stuff
b. Exit from the session
b is safe state - and currently it is only one state, that we can forward to client side (with keep_alive packets) - so I prefer b
Okay, I think one more point to consider is that it would be preferable to
have such an option for backend sessions and not for other processes