Ανάγνωση των χρόνων του proxy του cURL από την πλευρά του πελάτη
Ερμηνεύστε τους χρόνους σύνδεσης, TLS, πρώτου byte και συνολικού χρόνου χωρίς να αποδίδετε μη παρατηρημένη εργασία ανάντη σε μέτρηση μόνο του proxy.
Ας υποθέσουμε ότι το cURL ανοίγει μια νέα σύνδεση TCP σε έναν απλό διαμεσολαβητή HTTP, δημιουργεί ένα τούνελ HTTPS και κατεβάζει μία απόκριση. Οι χρόνοι περιγράφουν ορόσημα που παρατήρησε το cURL σε αυτή τη διαδρομή.
| Τιμή | Ορόσημο μετρημένο από την έναρξη της μεταφοράς |
|---|---|
| time_connect | Η σύνδεση με τον proxy ολοκληρώθηκε |
| time_appconnect | Η σχετική χειραψία TLS ολοκληρώθηκε |
| time_starttransfer | Ελήφθη το πρώτο byte της απόκρισης |
| time_total | Η μεταφορά τελείωσε |
Για μια ενδεικτική καταγραφή σε κέλυφος 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/
Για μια επιτρεπτή δημόσια σύγκριση HTTPS χωρίς διαπιστευτήρια proxy, μια καταχώριση HTTP από τη λίστα διαμεσολαβητών HTTP μπορεί να αντικαταστήσει τον proxy του παραδείγματος. Οι τιμές είναι αθροιστικά δευτερόλεπτα. Δεν είναι τέσσερις ανεξάρτητες διάρκειες που προστίθενται. Κρατήστε το σφάλμα μεταφοράς και την κατάσταση της απόκρισης δίπλα στους αριθμούς: μια αποτυχημένη σύνδεση ή ένα τούνελ που απορρίφθηκε δεν έφτασε σε κάθε επόμενο ορόσημο.
Τι μπορεί να σας πει η αφαίρεση
Για μία επιτυχημένη απόκριση, το time_total μείον το time_starttransfer περιγράφει το διάστημα που απομένει αφού φτάσει το πρώτο byte. Πρόκειται κυρίως για τη μεταγενέστερη μεταφορά της απόκρισης και την σχετική εργασία στην πλευρά του πελάτη. Δεν είναι ο χρόνος του proxy για σύνδεση με τον ιστότοπο, γιατί αυτό συνέβη πριν φτάσει η απόκριση.
Παρομοίως, το time_starttransfer μείον το time_connect μπορεί να περιλαμβάνει τη δημιουργία τούνελ, TLS, αναμονές του ανάντη δικτύου, εργασία του διακομιστή και άλλη επεξεργασία. Το να ονομάζουμε όλη τη διαφορά "καθυστέρηση του proxy" αποδίδει πολλά συστατικά σε έναν μόνο συμμετέχοντα.
Για να διαχωρίσετε τις αναμονές του proxy για DNS, σύνδεση και απόκριση, αποκτήστε αντίστοιχες παρατηρήσεις ή ίχνη από την πλευρά του proxy. Ο πελάτης δεν λαμβάνει αυτές τις εσωτερικές χρονικές σφραγίδες απλώς χρησιμοποιώντας HTTP CONNECT.
Συγκρίνετε ισοδύναμες μεταφορές. Οι ανακατευθύνσεις προσθέτουν χρόνους πολλών αιτημάτων, ενώ η επαναχρησιμοποίηση συνδέσεων και η πολυπλεξία αλλάζουν ποια προπαρασκευαστική εργασία απαιτείται. Καταγράψτε αυτές τις συνθήκες πριν συγκρίνετε τους αριθμούς ενός proxy με ενός άλλου.