Como diagnosticar frequente “500 Internal Server Error” no Oracle Apex

3

Eu tenho um banco de dados Oracle 10g XE em execução no OEL 5 em uma instância do Amazon EC2. Nele eu corro um site público (na verdade, 2 sites da Web) escrito no Oracle Application Express 4.0.1.

Na maior parte do ano, o site é usado principalmente por pessoas que apenas visualizam informações. Como tal, funciona bem - sem erros, sem muita atividade. Por volta dessa época do ano (março-abril), quando começamos a receber inscrições de pessoas para uma equipe esportiva, começo a ver erros freqüentes, quase sempre ao enviar uma tela (por exemplo, uma que crie ou atualize um registro).

Preciso de ajuda para encontrar a causa do erro.

A mensagem de erro real é um erro do Apache "resposta inválida do servidor upstream", que é devido ao fato de eu ter o Apache em execução (porta 80) na frente do Apex - ele ProxyPasses as solicitações no / apex / para Apex ( porta 8080). Quando acesso o Apex diretamente pela porta 8080, recebo 500 Internal Server Error . Os logs do Apache mostram que o Apache também está recebendo. Sempre leva de 3 a 5 segundos para retornar a página de erro.

Às vezes (como agora, quando estou tentando reproduzi-lo), isso não acontece de jeito nenhum. Outras vezes (talvez quando há várias pessoas nela) levará 3-4 antes que a atualização seja aceita. Quando isso acontece, ocorre com muita frequência - ou seja, talvez apenas 1 em cada 10 solicitações sejam bem-sucedidas na primeira tentativa.

Eu vi isso surgir em diversos aplicativos diferentes, bem como no próprio aplicativo de desenvolvimento / administração do Apex. O problema não é isolado para nenhum conjunto de páginas, e eu vi quando uma página deveria inserir um registro, atualizar um registro, chamar um procedimento ou apenas navegar para outra página (embora essa última seja rara).

Nada é adicionado ao log de alerta. Eu pensei que poderia ser um problema de espaço, mas todos os tablespaces parecem ter espaço livre suficiente. Eu tentei reiniciar o Apache e reiniciar o banco de dados, sem nenhuma alteração. Eu fiquei sem coisas para apenas "experimentar", e gostaria de descobrir a causa do problema de uma vez por todas, se possível.

    
por Jeffrey Kemp 12.04.2011 / 04:01

2 respostas

1

Eu ainda não sei se esta é a resposta, mas - durante a recente interrupção no Amazon US-East, notei que estava recebendo ORA-00018 maximum number of sessions exceeded ao tentar se conectar ao banco de dados.

Desde então, aumentei o número de processos (aumentando assim o número de sessões). Desde a interrupção, percebi que o erro não aconteceu novamente.

NOTA: Da próxima vez que tivermos uma enxurrada de atividades, eu vou reduzir esse parâmetro e ver se o problema ocorrer novamente - então eu terei uma idéia melhor se esta for a solução.

    
por 27.04.2011 / 08:47
1

Uma coisa importante a ser lembrada sobre o Oracle XE é que ele impõe limites estritos no uso de RAM, no uso do espaço de dados do usuário e no uso da CPU. Portanto, qualquer aplicativo que esteja tentando atender várias solicitações verá os tempos limite, a menos que sejam especificamente codificados para lidar com essas esperas. Isso pode explicar por que você está vendo "travar" sem receber uma mensagem nos logs de alerta: nada está errado, o sistema simplesmente está lidando com tarefas anteriores ainda.

    
por 26.07.2012 / 05:56