Resposta lenta intermitente e tempos limite - Apache + mod_wsgi + Web2py

1

Eu tenho o Ubuntu 14.04.5 LTS (i686) em uma gota Digital Ocean com 2x2.4GHzCPU & Memória física de 4GB. Eu estou executando um aplicativo web2py nele com o Apache e mod_wsgi. Existem alguns módulos python adicionais instalados na caixa, como numpy e opencv2. O banco de dados é o MySQL 5.5.

Um site do Wordpress em outro servidor chama esse aplicativo web2py usando php-curl . Normalmente, o tempo de resposta é de 2-5 segundos. Mas, ocasionalmente, o limite de tempo (o tempo de resposta vai para > 1000 segundos). Eu adicionei pontos de log no aplicativo Web2py e eles dizem que depois de chegar ao aplicativo, tudo é concluído em 2-3 segundos. Mas no log de acesso do Apache2, o tempo de resposta registrado como um número maior que 1000 segundos. No log de acesso, o tempo de solicitação é aproximadamente o mesmo quando a solicitação é iniciada no site do Wordpress.

Alguém pode apontar como descobrir o motivo dessa resposta lenta intermitente?

Obrigado

    
por user2436428 06.09.2017 / 06:50

2 respostas

0

Finalmente consegui descobrir a causa do problema. Foi uma declaração de conexão para um banco de dados remoto no arquivo de modelo padrão do aplicativo web2py. Esta conexão de banco de dados não estava sendo usada no aplicativo em qualquer lugar. Mas como estava em um arquivo de modelo, sempre que uma função de controlador é chamada, o aplicativo tenta se conectar desnecessariamente a esse banco de dados remoto.

Inicialmente, adicionei pontos de registro em todos os lugares no aplicativo, mas não adicionei o arquivo de modelo padrão do aplicativo; Portanto, os logs ficaram em silêncio sobre a causa raiz. Então eu testei o aplicativo apenas substituindo o conteúdo da pasta do aplicativo um por um com os arquivos de um aplicativo de demonstração (que vem com o web2py) e ajudei a revelar a causa raiz do problema. A causa raiz foi então verificada adicionando o registro no início e no final dos arquivos de modelo padrão do aplicativo.

    
por 18.09.2017 / 16:36
0

Para descobrir a causa raiz do tempo limite, você pode usar o php slowlog, que explicará qual função é responsável.

Você precisa modificar seu www.conf e alterar o valor padrão 0 da opção request_slowlog_timeout . Por exemplo:

request_slowlog_timeout = 10s

Você pode ler um pouco mais sobre como ativar o slowlog aqui e dar uma olhada em algumas informações comuns fontes de lentidão aqui .

    
por 13.09.2017 / 16:48