Sleep Processes are Running Longer Than Allowed
There are two possibilities the come to mind:


the values of interactive_timeout and wait_timeout were not 600 when those threads first connected, so they are using the values that existed when they first connected, or
the application is changing the timeout values for its sessions after connecting.


If you're running out of available connections, though, why not just raise max_connections?   If the threads are sleeping, you're not talking about a significant resource cost.