Hola amigo yo tuve una vez un problema parecido y se debia principalmente a que abria muchas conecciones para hacer consultas a la base de datos y luego no las cerraba, te recomiendo que cada vez que abras una coneccion en algun procedimiento o funcion de tu programa no te olvides de ponerle close() a la coneccion cuando no la necesites de esta manera liberas los recursos del motor de base de datos y lo dejas disponible para futuras conecciones, tambien es recomendable que una vez que asignas memoria dinamica a tus objetos la liberes.
Código:
Dim Coneccion = new coneccion
Coneccion.open(CadenaConeccion)
.....
Coneccion.Close()
Coneccion.Dispose()
Te recomiendo que revises todo tu codigo en busca de conecciones que no se cierran despues de usarlas.
Espero que esto solucione tu problema.