Servidor demorando muito para responder erro

2

Este é meu primeiro post no serverFault e minha primeira entrada na configuração do servidor web.

O hardware e software.

CPU: CPU Intel® Core ™ 2 Duo E7500 @ 2.93GHz - GenuineIntel SO: Linux 2.6.18-128.el5
Memória: 2Gb

Histórico.

Eu estou executando um pequeno banco de dados (MySQL), cerca de 1000 registros com cada registro contendo 44 campos. No início de cada dia "00:01", as tabelas são limpas e preenchidas com dados novos.

São 10 PCs remotos que executam o navegador de internet Winodws XP e Firefox. Todos os PCs remotos estão conectados à Internet usando uma conexão de banda larga mínima de 4 Gb.

Cada PC remoto executa uma URL que exibe uma página dinâmica de dados que é atualizada a cada 20 segundos. Este é um processo contínuo 24 horas por dia.

Eu problema estou tendo é em ocasiões ímpares ao longo do dia o erro do navegador PC com "Servidor demorando muito para responder erro". O que estou tentando encontrar é se eu tiver a configuração correta no arquivo httpd.conf no servidor. Qualquer ajuda ou conselho que alguém possa fornecer seria muito útil.

Atenciosamente

Dereck

Arquivo de configuração do servidor:

link

ServerRoot "/etc/httpd"

PidFile run/httpd.pid

Timeout 120

KeepAlive On

MaxKeepAliveRequests 200

KeepAliveTimeout 5

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       254
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     150 
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>
    
por DCJones 17.01.2011 / 22:40

3 respostas

1

Algumas coisas que você pode verificar:

  • Tem certeza de que o seu site não está disponível e não é um problema da Intranet ou Internet local? É sempre o mesmo computador que tem o problema de acesso ou todos eles têm aleatoriamente? Se for o primeiro, suspeitaria de um problema de conexão local.
  • Verifique os registros (Apache, MySQL, sistema, etc ...) o tempo todo em que você vê o problema de quaisquer mensagens de erro relevantes.
  • Se possível, verifique a carga no servidor quando encontrar um problema (superior, netstat, df, etc ...). Você também pode configurar algum tipo de serviço de monitoramento simples que o notificará sobre quaisquer problemas significativos do sistema.
  • O problema não é necessariamente as configurações do Apache, mas qualquer coisa na pilha que seu aplicativo usa, portanto, o MySQL e qualquer linguagem (PHP / PERL / ...) que você esteja usando.
  • Você pode testar o benchmarking / stress testing do seu site usando ab / siege para ver se você duplica o problema forçadamente, em vez de esperar que ele apareça. O problema pode ser simplesmente que, em determinados momentos do dia, todos os 10 computadores enviam uma solicitação ao mesmo tempo, e que o servidor não pode manipular. O benchmarking ajudaria a informar se isso é um problema ou não.
  • Quando você estiver mais perto de identificar a causa, tente escrever pequenos casos de teste para tentar isolá-los / duplicá-los. Depois de corrigir o problema, você pode executar novamente os testes para confirmar se o problema está de fato corrigido (em oposição ao bom teste de 'bem, ele não bateu hoje').
por 18.01.2011 / 14:38
1

Sua configuração está longe de ser ideal, no entanto, ela não deve ter absolutamente nenhum problema em atender a carga descrita por você.

Você não nos deu muitos detalhes sobre como o código funciona. Não há nada na sua descrição do código para sugerir que isso poderia causar um tempo limite - mas é concebível que possa haver deadlocks no código. Nesse caso, seus logs devem estar cheios de erros. Na verdade, esse é o primeiro lugar a procurar quando o site não se comporta como você espera. Seu log de acesso (o apache geralmente é configurado para usar o formato de log combinado) mostrará os tempos tomados para cada solicitação. Existem valores altos? Qualquer coisa acima de 120 segundos deve produzir uma entrada de log de erro também.

Você não pode acessar um banco de dados MySQL do Apache - você precisa de alguma lógica de aplicativo no meio - mas você não deu detalhes. Isso deve ser um erro de registro se as solicitações estivessem demorando tanto.

No entanto, eu colocaria apostas no problema estando no lado do cliente ou na rede - a solicitação nunca está chegando ao servidor da web. Para provar isso, eu verificaria a duração da última solicitação de um cliente antes que ele fosse cliente - ele não será mais do que o esperado. Quanto a como você isola a causa raiz ... isso é mais complicado. A manutenção de logs de pacotes detalhados em todos os clientes e no servidor é bastante difícil. Os candidatos mais prováveis são a própria rede ou o software de "segurança".

Provavelmente é muito mais simples examinar o mecanismo pelo qual a página é atualizada e construir algo muito mais resiliente com alguns diagnósticos básicos integrados (ou seja, escritos em javascript, exibindo uma mensagem de erro sensata quando houver falhas e verificação da conectividade do site) )

    
por 05.01.2013 / 23:38
0

Parece que seu servidor está bloqueando por algum motivo. Pode ser necessário aumentar as configurações do apache ou alternar para fastcgi, mas suspeito que haja uma lentidão no PHP ou MYSQL. Ligue o log de consultas lentas do mysql para ver se o mysql pode ser a lentidão. Consulte o link

    
por 17.01.2011 / 23:23

Tags