curl-välityspalvelimen aikakatkaisut: etsi epäonnistunut vaihe
Erota välityspalvelinyhteyden muodostus, tunnelin neuvottelu, TLS ja pysähtynyt vastaus curls-aikarajojen avulla tehtävässä vianrajauksessa.
Etsi curlin yksityiskohtaisesta tulosteesta viimeinen valmistunut toiminto. ”Yhteys välityspalvelimeen muodostui, mutta CONNECT-vastausta ei tullut” rajaa ongelmaa paljon paremmin kuin ”välityspalvelimen aikakatkaisu”.
Käytä aikarajoitettua pyyntöä ja korvaa paikallinen esimerkki omalla HTTP-välityspalvelimellasi; HTTP-välityspalvelinluettelosta voi löytää muita päätepisteitä vertailuun:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/--connect-timeout 5 antaa yhteyden muodostukselle yhden yhteisen aikabudjetin, johon sisältyvät soveltuvat haut ja kättelyt; se ei anna jokaiselle vaiheelle viittä sekuntia. --max-time 15 rajaa koko toiminnon, myös muodostuksen jälkeisen siirtoajan.
| Mihin eteneminen pysähtyy | Mitä tutkia seuraavaksi |
|---|---|
| Ei yhteyttä välityspalvelimeen | Välityspalvelimen nimenratkaisu, kuunteleva portti, reititys ja palomuurikäytännöt. |
| Välityspalvelinyhteys muodostui; ei tunnelivastausta | Välityspalvelimen kuorma, todennusneuvottelu, pääsykäytännöt ja kohteen saavutettavuus välityspalvelimelta. |
| Tunneli hyväksytty; TLS kesken | Kohteen saavutettavuus, TLS-neuvottelu ja hallinnoitu liikenteen sieppaus. |
| Kohteen otsakkeet saapuvat; runko pysähtyy | Alkuperäpalvelimen siirtokäyttäytyminen, välissä tapahtuva puskurointi ja sovelluksen mahdollinen tarkoituksellinen hiljaisuus. |
Kättelyjärjestys selitetään artikkelissa miten CONNECT kuljettaa HTTPS-liikennettä. Pysähtyminen yhteyden aikabudjetin tuntumassa viittaa muodostukseen; myöhempi pysähtyminen kokonaisaikarajaan viittaa keskeneräiseen siirtoon. Tarkastele järjestystä yhdessä aikojen kanssa: aika ei yksin tunnista komponenttia. Lokitekstit vaihtelevat curl-koontiversioiden välillä, eikä avoin TCP-portti osoita CONNECTin toimivan.
Pidä toinen puoli ennallaan
Vertaa samaa kohdetta sallitun suoran reitin kautta:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Vertaa sitten toista harmitonta kohdetta saman välityspalvelimen kautta. Jos vain yksi kohde epäonnistuu, tutki kyseistä reittiä tai kohteen käytäntöjä. Jos kaikki pysähtyvät samaan muodostusvaiheeseen, tutki yhteistä välityspalvelinreittiä. Tallenna aloitusaika, päätepiste, kohde ja viimeinen valmistunut vaihe; poista tunnistetiedot, tunnukset, evästeet ja yksityiset nimet ennen lokien jakamista.
Kun yhteys pysyy auki ilman hyödyllistä etenemistä
Tiedostonsiirto voi tarvita hitaan nopeuden rajan muodostus- ja kokonaisaikarajojen lisäksi:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 60 --speed-limit 100 --speed-time 20 https://example.com/Tämä keskeyttää toiminnon, jos jatkuva siirtonopeus pysyy alle 100 tavussa sekunnissa 20 sekuntia, ja säilyttää 60 sekunnin kokonaisrajan. Valitse arvot kuorman mukaan. Tapahtumavirta voi olla kunnossa pitkien hiljaisten jaksojen aikana, joten lataussääntö voi keskeyttää sen virheellisesti.
Kaikkien rajojen nostaminen lykkää oiretta. Välittömät toistuvat yritykset voivat lisätä yhteyksiä ylikuormittuneelle reitille. Tee diagnoosi muutamalla harkitulla vertailulla; sovelluksen myöhempi uudelleenyrityskäytäntö tarvitsee oman kokonaisaikabudjettinsa sekä arvion toistamisen turvallisuudesta.