Se o null pointer ocorreu devido a estourar o número de conexões com o banco pode até ser. Sem ter o stack trace dessas null pointer exceptions fica difícil adivinhar.
No catalina.out só tem isso mesmo, eu acho que não foi nada em relação ao banco não, porque a conexão eu faço com JDBC puro, então, eu abro e fecho as conexões se não conseguir abrir espero e tento novamente, e outros máquinas com a mesma aplicação também usam o mesmo banco.
Sim, quando o problema era conexão, acabava dando problema nas três máquinas que usavam o banco de dados.
Eu faço requisições sockets será que o problema é isso?
Achei no log que teve várias requisições que receberam “null” como resposta do servidor, será que pode ter sido isso?
Quando é gerada várias exceptions deste tipo o heap da jvm pode ser “consumido”? E com isso gerar falta de memória?
Se você usar ObjectInputStream / ObjectOutputStream, por exemplo, você pode ter problemas sérios de “vazamento de memória”. Você usa alguma dessas coisas sem usar também o método “reset” ?
De qualquer maneira, usar sockets é sempre meio complicado, porque os dois lados (cliente e servidor) devem ser cuidadosamente escritos de modo que não fiquem “sockets pendurados” (isso você pode constatar com o netstat).
Pode ser que você precise revisar sua aplicação que usa sockets para usar “TCP No Delay” (setTcpNoDelay), e também “Shutdown” (shutdownOutput, shutdownInput). Você precisa achar um fonte de uma aplicação que use isso direito para poder ver como é que isso é feito.
Então… depende. Você precisa ver se está chamando os “shutdownInput/shutdownOutput” adequadamente.
Para chamar um servidor Apache, normalmente (para evitar essas problemáticas de sockets) costuma-se usar uma URLConnection mesmo, que já usa o protocolo http ou https, dependendo de como você fez a configuração da URL.