
Hospedamos nosso serviço web em um servidor dedicado. Às vezes (eu diria 1 em 20) uma resposta não é recebida do servidor. Isso faz com que o navegador volte com erro de tempo limite.
Um detalhe importante: a requisição não é registrada pelo Apache neste caso. O servidor não está carregado, ainda há muita memória livre e energia de CPU.
Criei um perfil do caso do problema com o utilitário tcpdump. Estas são as sessões “boas” e “ruins” rastreadas pelo tcpdump. A solicitação é a mesma em ambos os experimentos. Bom - o servidor retorna resposta. Ruim - sem resposta, erro de tempo limite.
Você vê por que o problema acontece a partir desses dados? Como posso avançar para me aproximar da origem do erro?
Substituí meu endereço IP real por 123.45.67.890
---- Bad ----
12:23:36.366292 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:23:39.362394 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:23:45.365567 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,nop,sackOK>
--------
---- Good ----
12:27:07.632229 IP 123.45.67.890.63914 > myserver.superbservers.com.www: S 3581365570:3581365570(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:27:10.620946 IP 123.45.67.890.63914 > myserver.superbservers.com.www: S 3581365570:3581365570(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:27:10.620969 IP myserver.superbservers.com.www > 123.45.67.890.63914: S 2654770980:2654770980(0) ack 3581365571 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 6>
12:27:10.838747 IP 123.45.67.890.63914 > myserver.superbservers.com.www: . ack 1 win 4380
12:27:10.957143 IP 123.45.67.890.63914 > myserver.superbservers.com.www: P 1:213(212) ack 1 win 4380
12:27:10.957152 IP myserver.superbservers.com.www > 123.45.67.890.63914: . ack 213 win 108
12:27:10.965543 IP myserver.superbservers.com.www > 123.45.67.890.63914: P 1:630(629) ack 213 win 108
12:27:10.965621 IP myserver.superbservers.com.www > 123.45.67.890.63914: F 630:630(0) ack 213 win 108
12:27:11.183540 IP 123.45.67.890.63914 > myserver.superbservers.com.www: . ack 631 win 4222
12:27:11.185657 IP 123.45.67.890.63914 > myserver.superbservers.com.www: F 213:213(0) ack 631 win 4222
12:27:11.185663 IP myserver.superbservers.com.www > 123.45.67.890.63914: . ack 214 win 108
--------
Detalhes sobre o serviço.
Este é um serviço de previsão do tempo. Está escrito em Perl, apoiado por MySQL. O script utiliza vários módulos (do CPAN e dos nossos).
O código é relativamente simples. O script baixa a previsão do tempo de outro servidor, converte o formato dos dados e retorna uma resposta XML. O clima é armazenado em cache no MyISAM DB. Existe um banco de dados de localizações mundiais (INNODB) que também pode ser solicitado através do script.
Hospedagem: SuperbHosting SO: Ubuntu
Responder1
Tente usartcpdumpouwireharkpara monitorar o tráfego da rede. Dessa forma, pelo menos você saberá se há um problema de rede. Ou seja, verifique se a solicitação chega à máquina.
Além disso, por padrão, a maioria dos navegadores tem um número limitado (2) de conexões que podem ser feitas com um mesmo servidor. Se a sua página tiver alguns objetos javascript que "esquecem" de fechar conexões, etc., pode ser que o navegador nunca envie a solicitação.
Responder2
Você pode tentar sua solicitação usando apenas endereços IP? Nesse caso, isso pode ajudar a diminuir o problema.
Todas as solicitações vêm do mesmo local, qual é o problema? Nesse caso, tente outro local, talvez um laptop em um Starbucks ou algo assim. Se acontecer em mais de um local, usando navegadores diferentes, em uma página muito simples, sem AJAX ou Javascript complicado, essa é uma informação valiosa.
Se o uso do endereço IP funcionar de maneira confiável, provavelmente é DNS. Conhecer o nome de domínio em uso pode ajudar a restringi-lo.
Responder3
Eu iria com Michael Gaff e depois investiria algum dinheiro na empresa de hospedagem - esses tipos de problemas de tráfego ocorrem facilmente com falhas em painéis de patch, nics, problemas de driver de nic ou cabeamento ruim, entre milhares de outras coisas de infraestrutura.
Conto com que você tenha tentado isso em locais diferentes (ou tenha relatórios de outros locais com os mesmos problemas) e tenha obtido o mesmo problema de qualquer maneira, para que possamos descartar um problema do seu lado, correto?
Sou louco por hardware, então tendo a me inclinar para falhas de hardware como causa de problemas estranhos de software e rede e destruição em massa em geral.
Responder4
O problema era um grande número de conexões TCP abertas; novas conexões eram interrompidas ocasionalmente por causa disso.