Meu PHP continua lançando erros aleatórios relacionados a scripts lentos. nginx / php5-fpm reportam em seus logs de erro que o filho foi finalizado devido ao tempo limite do script.
O log de erros lentos do PHP5-FPM informa que o problema está nas solicitações de curl que eu faço.
Confusa porque uso os tempos limite de conexão em todos os meus pedidos de onda, por exemplo,
CURLOPT_CONNECTTIMEOUT 3 #number of seconds trying to connect
CURLOPT_TIMEOUT 3 #number of seconds to run curl for
Este é um servidor de produção, portanto, os valores são baixos, esperamos uma resposta dentro de 1 segundo.
Então percebi que os URLs que usamos para o CURL devem estar falhando no nível do DNS.
Então eu simulei um DNS ruim ou um DNS não disponível e consegui reproduzir os mesmos erros e mensagens de script lentas no meu log.
Então, como eu lido com isso?
1) CURLOPT_DNS_CACHE_TIMEOUT - mas aumenta o padrão de 2 minutos para 10 minutos?
No entanto, eu vi que em meus erros eu tinha esses scripts lentos por 2 minutos e 3 segundos exatamente ... o que sugere que o padrão CURLOPT_DNS_CACHE_TIMEOUT de 2 minutos é o cache de uma resposta ruim que está acabando com o cache definido para. Os horários parecia conveniente para ignorar, mas eu poderia estar errado. Colocaria em cache um DNS / DNS incorreto?
2) Edite meus servidores de nomes DNS de alguma forma para permitir vários servidores DNS.
No entanto, editei meu arquivo resolv.conf e adicionei o openDNS aos servidores de nomes existentes. Mas eu coloquei um DNS falso primeiro 1.1.1.1 e ainda falhou me dando um erro de gateway ruim no site. Por que não está escolhendo outro servidor para obter uma resposta?
Eu pensei em adicionar vários servidores para classificá-lo, mas ele ainda está lendo o primeiro da lista e falhando. Eu acho que o cache curl pode estar fazendo cache de respostas ruins, mas não tenho certeza. O ideal é manter o cache para reduzir a latência para procurar o IP.
Alguma sugestão sobre como eu poderia resolver um servidor DNS indisponível de travar meu script php / solicitações de curl?
obrigado