curl http_code de 000

Pregunta:

Tengo un script de shell que utilizo para monitorear los tiempos de carga y los códigos de respuesta en mi clúster de servidores en vivo. Ejecuta un total de 250 iteraciones cada 5 minutos, distribuidas en 10 servidores y 6 sitios. Utiliza curl con la bandera -w para devolver información pertinente que luego es analizada por mi script de shell:

curl -svw 'monitor_load_times %{time_total} %{http_code}' -b 'server=$server' -m 15 -o /dev/null $url 2>&1

Luego, esta información se analiza mediante un script de gráficos que puede mostrar una serie de respuestas diferentes. Sin embargo, curl ocasionalmente devolverá un código de respuesta de "000". Cuando esto sucede, parece suceder varias veces a la vez a pesar de estar distribuido en muchas iteraciones:

Error code graph

Lo que estoy tratando de resolver es si este es un problema del lado del cliente que está sesgando mis resultados o si en realidad es indicativo de un problema del lado del servidor que afecta a todo mi clúster. ¿000 significa que se interrumpió la conexión? Las entradas de la base de datos correspondientes a las iteraciones de curl con ese código de respuesta devuelven "0.000" para el valor time_total. Todos los resultados de búsqueda que he encontrado para curl que devuelve un código 000 están relacionados con HTTPS no compatible, pero todas mis URL de prueba son HTTP.

(El aumento en 500 errores es un problema completamente ajeno que afectó a mis servidores anoche).

Respuesta:

La respuesta 000 indica que cURL no se pudo ejecutar por algún motivo. En tal caso, debe probar el código de salida cURL en lugar de hacer suposiciones. Consulte la sección "Códigos de salida" de la página de manual de curl para obtener una lista completa de los códigos de salida y sus significados.

Resolución de DNS fallida (6)

$ curl -w "%{http_code}\n" http://example.invalid/ ; echo "Exit code: $?"
000
curl: (6) Could not resolve host: example.invalid
Exit code: 6

(Respondido por ILIV)

Conexión rechazada (7)

$ curl -w "%{http_code}\n" http://localhost:81/ ; echo "Exit code: $?"
000
curl: (7) Failed to connect to localhost port 81: Connection refused
Exit code: 7

Tiempo de conexión agotado (28)

$ curl -w "%{http_code}\n" -m 5 http://10.255.255.1/ ; echo "Exit code: $?"
000
curl: (28) Connection timed out after 5001 milliseconds
Exit code: 28

(Respondido por Arun)

El servidor en realidad devuelve 000 por alguna razón (0)

Inicie un servidor falso:

$ nc -l -p 65535 & <<EOF
> HTTP/1.1 000 Fake Status Code
> Content-Length: 0
> Connection: close
>
> EOF

Solicitud de cliente:

$ curl -w "%{http_code}\n" http://localhost:65535/ ; echo "Exit code: $?"
000
Exit code: 0

No tengo idea de por qué sucedería esto en el mundo real, pero bueno. Si cURL no obtiene un código de estado válido, asume 200.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım