Infelizmente, não é possível apontar uma causa exata apenas com o contexto dado na pergunta. Você precisará coletar mais informações sobre isso para apontar qualquer causa raiz.
Eu só posso oferecer heurísticas gerais para depurá-lo. Tente alterar vários parâmetros do ambiente para localizar a causa raiz, alterando apenas uma coisa por vez. Quando o problema ocorre? Isso acontece sob determinada carga de aplicativo. O que acontece se você executar a instância do tomcat sem seu aplicativo? Funciona em outro SO ou máquina?
Você precisará começar a isolar a falha. Se funcionar bem em outra máquina, você pode descartar as causas ambientais, como uma tarefa cron ou algum serviço do sistema, eliminando o processo. Se a sua instância do tomcat for executada corretamente sem o aplicativo, a falha não estará na configuração do servidor. E assim por diante.
Para acelerar o processo (já que isso ocorre apenas a cada poucos dias), você pode executar cada teste em uma instância separada do tomcat e, assim, fazer testes simultâneos para várias possibilidades.
Para mim, a memória não parece ser o problema aqui. A memória alocada deve ser suficiente, mas, mesmo que não seja, você deve obter OutOfMemoryError
não apenas desligamentos arbitrários silenciosos.
Você pode tentar aumentar o detalhamento do log do tomcat para imprimir informações mais detalhadas. Isso pode ser feito alterando as configurações em ./conf/logging.properties