Actual tcpKeepAlive option default to false.
TCP connections consist of two sockets, one on each end of the connection.
Both sides will keep their socket open indefinitely. This leaves open the possibility that one side may close their socket, either intentionally or due to some error, without informing the other end via FIN. In order to detect this scenario and close stale connections the TCP Keep Alive process is used.
Since the process doesn't start until a connection has been idle for two hours (this time is OS dependant), and database connection are expensive, better to have a pool that ensure that connection is valid more often than that, but it remain that if it's not the case, driver after 2 hours idle connection must ensure that socket is still ok.