Apache com nginx front-end leva é indexado 100% da CPU com Django app

2

Eu lancei recentemente um aplicativo da web que é constantemente indexado a 100% da CPU. Meu servidor é um Linode de 512 MB com nginx sentado na frente do Apache (MPM Worker) servindo um aplicativo Django. Este aplicativo é incomum na medida em que tem que fazer processamento de banco de dados pesado < 5% do tempo (~ 2-5k consultas / solicitação). Eu tenho apenas um pequeno número de usuários atualmente (50 em um dia, ~ 5-10 a qualquer momento). Agora eu entendo que fazer várias milhares de consultas está no topo e estou olhando para otimizá-lo, mas eu não entendo porque os processos do Apache vão para 100% e ficam lá mesmo que ninguém esteja visitando a página de carga pesada. / p>

Aqui faz parte da minha configuração do Apache:

<IfModule mpm_worker_module>
 StartServers          2
 MinSpareThreads      25
 MaxSpareThreads      75 
 ThreadLimit          64
 ThreadsPerChild      25
 MaxClients          150
 MaxRequestsPerChild   0
</IfModule>

Aqui estão as principais linhas do topo:

10257 www-data  20   0  370m 143m 4052 S  100 29.0  16:19.47 apache2                                                     
1 root      20   0  2728  224   24 S    0  0.0   0:01.34 init                                                        
2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd 

Qualquer ajuda seria muito apreciada!

    
por mathew 21.04.2012 / 02:09

1 resposta

0

Isso acabou não sendo um problema no servidor. Havia um caminho de código específico que exigia muito da CPU (era a operação O (n ^ 2) no pior dos casos). Eu localizei o problema entrando em contato com um determinado usuário beta que estava com o problema e copiando seus dados para o meu servidor de teste e testando-o. Eu consegui reproduzi-lo e corrigi-lo de lá.

Eu ainda gostaria de saber por que a requisição do Apache continuaria a processar a requisição quando o usuário tivesse parado o seu lado da conexão.

    
por 22.04.2012 / 20:25