Leggere i tempi del proxy di cURL dal lato client
Interpretare i tempi di connessione, TLS, primo byte e totale senza attribuire lavoro a monte non osservato a una misurazione del solo proxy.
Supponiamo che cURL apra una nuova connessione TCP verso un proxy HTTP semplice, stabilisca un tunnel HTTPS e scarichi una risposta. I tempi descrivono le tappe osservate da cURL su quel percorso.
| Valore | Tappa misurata dall'inizio del trasferimento |
|---|---|
| time_connect | La connessione al proxy è completata |
| time_appconnect | Lo handshake TLS pertinente è completato |
| time_starttransfer | È stato ricevuto il primo byte della risposta |
| time_total | Il trasferimento è terminato |
Per una cattura esemplificativa in una shell POSIX:
curl --proxy http://proxy.example:8080 \
--output /dev/null \
--write-out 'connect=%{time_connect} tls=%{time_appconnect} first=%{time_starttransfer} total=%{time_total}\n' \
https://example.com/
Per un confronto HTTPS pubblico consentito senza credenziali del proxy, una voce HTTP dell'elenco di proxy HTTP può sostituire il proxy dell'esempio. I valori sono secondi cumulativi. Non sono quattro durate indipendenti da sommare. Tenere l'errore di trasferimento e lo stato della risposta accanto ai numeri: una connessione fallita o un tunnel rifiutato non ha raggiunto ogni tappa successiva.
Cosa può dirti la sottrazione
Per una singola risposta riuscita, time_total meno time_starttransfer descrive l'intervallo rimanente dopo l'arrivo del primo byte. Si tratta soprattutto del trasferimento successivo della risposta e del lavoro associato lato client. Non è il tempo impiegato dal proxy per connettersi al sito, perché ciò è avvenuto prima che la risposta potesse arrivare.
Allo stesso modo, time_starttransfer meno time_connect può includere la creazione del tunnel, TLS, le attese della rete a monte, il lavoro del server e altre elaborazioni. Chiamare l'intera differenza "latenza del proxy" assegna più componenti a un solo partecipante.
Per separare le attese del proxy su DNS, connessione e risposta, ottenere osservazioni o tracce corrispondenti dal lato del proxy. Il client non riceve quei timestamp interni solo perché usa HTTP CONNECT.
Confrontare trasferimenti equivalenti. I reindirizzamenti aggiungono i tempi di più richieste, mentre il riuso delle connessioni e il multiplexing cambiano il lavoro di preparazione necessario. Annotare queste condizioni prima di confrontare i numeri di un proxy con quelli di un altro.