Acontece que o problema era que um dos três endereços IP round-robin atribuídos por Heroku era ruim. Eles descobriram isso em resposta ao meu pedido de suporte. Obrigado a todos por suas sugestões de métodos e ferramentas para perseguir isso!
Estou prestes a arrancar meu cabelo neste. Eu tenho um aplicativo de trilhos hospedado no Heroku, usando o Zerigo Free for DNS. O aplicativo está disponível em:
Os usuários estão intermitentemente (1 em 50 ou mais solicitações) tendo tempos de carregamento extremamente longos (~ 2min) e, quando tento fazer a triagem assistindo aos logs do meu servidor, as solicitações não parecem atingir até o final do período de espera . Tempos de carga típicos para o site são rápidos em torno de 200-400ms. Eu estou usando o NewRelic e ele não está indicando nenhum problema de carregamento do servidor, embora ele pegue o problema do usuário final com o seu beacon e os gráficos desta vez como "Rede".
Usando o Firebug e o Chrome devtools, consigo ver a linha do tempo quando isso acontece na minha máquina, e ambos mostram um longo tempo de espera antes de qualquer resposta, que o Firebug classifica como "pesquisa de DNS" e o Chrome não parece classificar . Depois que a primeira resposta acontece, o restante do site carrega muito rápido.
Acontece que o problema era que um dos três endereços IP round-robin atribuídos por Heroku era ruim. Eles descobriram isso em resposta ao meu pedido de suporte. Obrigado a todos por suas sugestões de métodos e ferramentas para perseguir isso!
Suponho que isso acontece porque o seu provedor de DNS (zerigo.net) está publicando registros IPV6 para seus servidores DNS. Seus clientes Windows e MAC estão usando um servidor DNS que possui o IPV6 ativado, mas não possui conectividade IPV6. Isso causa um tempo limite de DNS tentando acessar os servidores DNS via IPV6 antes de retornar ao IPV4. Tentando desativar o IPV6 no resolvedor de DNS e nas máquinas clientes e ver se você obtém melhores resultados.
Para outros que enfrentam este problema, isso ajudou a explicar:
O Heroku não usa uma fila de solicitações globais, portanto, uma única solicitação de execução longa pode fazer backlock de solicitações de execução rápida.