(simplifiquei os números para maior clareza, especialmente a parte da memória é muito alta)
Sua família MaxRequestsPerChild atualmente é 4000, pois você recebe 50 usuários por dia, que todos atualizam a cada 5 minutos por 18 horas, totalizando 600 solicitações por hora e 10800 solicitações por dia. Para referência, um usuário usa 218 conexões por dia.
Isso significa que os processos filhos são reiniciados 2,7 vezes ao dia. Se o seu aplicativo usa 50M de memória por recarga e consegue liberar 49M dele 1M por atualização, 50M para 50 usuários e 4G para 4000 recarregamentos. E a criança será morta.
Você deve inspecionar a quantidade de memória que seu aplicativo usa e definir esses valores de acordo com isso.
Se o seu servidor tiver 20G de memória, o vazamento de 1M funcionaria, mas a alteração de MaxRequestsPerChild para, por exemplo, 1000 faria com que o consumo de memória antes do reinício da criança fosse quatro vezes menor.
Para uma observação, você pode querer reduzir MaxClients para algo como 100 e garantir que não haja mais usuários do que você pensa. Dessa forma, problemas acidentais não farão com que o servidor perca muitas solicitações. Esse KeepAliveTimeout pode ter algo como 15 segundos, já que os usuários atualizam apenas a cada 5 minutos.