Você tem:
WSGIDaemonProcess xxx display-name=xxx group=www-data user=www-data processes=25 threads=1
mas depois tem:
WSGIProcessGroup %{GLOBAL}
, o que significa que você não está delegando o aplicativo WSGI para ser executado nesse grupo de processos do daemon.
Em outras palavras, você está executando seu aplicativo WSGI no modo incorporado e a diretiva WSGIDaemonProcess é redundante.
Se você também estiver usando o MPM prefork do Apache, provavelmente estará sofrendo possíveis problemas de velocidade devido ao uso do Apache em até 150 processos de thread único em sua configuração padrão.
A lentidão é provavelmente devida ao carregamento lento de sua aplicação WSGI, se ela for grande, quando uma requisição chegar.
À medida que mais solicitações chegam, o Apache precisa continuar criando novos processos para atender à demanda crescente. Se as solicitações caírem, o Apache começará a descartar processos. Se outro aumento nas solicitações chegar, ele precisará começar a gerar novos processos novamente e carregar seu aplicativo novamente.
Agora este é um cenário extremo, e o quanto você pode ser atingido depende de como as configurações do Apache MPM são definidas, quais não são exibidas e como é o seu perfil de tráfego.
No pior dos casos, você pode até mesmo ter sobrescrito a diretiva MaxRequestsPerChild e instruído o Apache a interromper o processo após um único ou pequeno número de solicitações e, portanto, você pode estar forçando recargas de seu aplicativo o tempo todo.
Para algumas leituras sobre problemas relacionados a esse tipo de problema, leia:
Então é assim que as coisas podem dar errado com base na configuração baseada no Apache.
Ignorando a configuração errada do modo daemon, você tem a possibilidade de ser um problema de aplicativo. Para isso, sugiro tentar uma ferramenta de monitoramento de desempenho. Minha sugestão tendenciosa é a New Relic. Mesmo que você não queira pagar por essa ferramenta, ela fornece duas semanas de teste para todos os recursos, o que pode ser suficiente para você decidir onde está o gargalo.
Para um exemplo do que a New Relic pode fazer pelo Python, veja: