Esses tempos limite aconteceram após períodos de inatividade? É provável que seu pool de conexões tenha ficado obsoleto depois de permanecer inativo por muito tempo.
Em caso afirmativo, existem duas maneiras de fazer isso:
-
Capture as exceções de tempo limite do soquete e sua solicitação imediata deverá ser capaz de acessar um novo conjunto de conexões. (isto é, se a opção de reconexão automática em seu objeto de conexão for deixada como true, que é o padrão.)
-
Use um keep-alive personalizado para fazer ping no servidor mongod periodicamente usando o mesmo pool de conexões, para que o pool permaneça atualizado.
A opção 1 é fácil de implementar, mas o tempo limite padrão do soquete é de cerca de 30 segundos, o que é bastante excessivo. Você pode alterar essa configuração conforme necessário.
A opção 2 é um pouco hack, envolvendo threading.