Em geral, esse erro pode ocorrer nas seguintes situações:
1) Você tem um número muito grande de usuários usando seu banco de dados ao mesmo tempo e fica sem conexões gratuitas. Possíveis soluções:aumentar o número de conexões permitidas em seu servidor e/ou (se seu sistema for um servidor web) aumentar o tamanho do pool especificado na string de conexão do banco de dados.
2) Seu sistema tem um design de lógica de banco de dados ruim e/ou vazamentos de conexão, como quando a conexão aberta não é fechada corretamente mais tarde. A solução para isso será auditar seu código para esses vazamentos de conexão e corrigi-los fechando adequadamente as conexões o tempo todo.