Znajdź ostatnią zakończoną operację w szczegółowym wyjściu curl. „Połączono z proxy, ale brak odpowiedzi CONNECT” zawęża problem znacznie lepiej niż „przekroczono czas proxy”.

Użyj żądania z limitami czasu, zastępując lokalny przykład swoim proxy HTTP; lista proxy HTTP pozwala znaleźć inne punkty końcowe do porównania:

curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/

--connect-timeout 5 przydziela jeden wspólny budżet na ustanowienie połączenia, łącznie z odpowiednimi wyszukiwaniami i uzgodnieniami; nie daje pięciu sekund na każdy etap. --max-time 15 ogranicza całą operację, w tym przesyłanie po ustanowieniu połączenia.

Gdzie zatrzymuje się postępCo sprawdzić dalej
Brak połączenia z proxyRozwiązywanie nazwy proxy, port nasłuchu, routing i reguły zapory.
Proxy połączone; brak odpowiedzi tuneluObciążenie proxy, negocjację uwierzytelniania, zasady dostępu i osiągalność celu z proxy.
Tunel zaakceptowany; TLS niezakończonyOsiągalność celu, negocjację TLS i zarządzane przechwytywanie ruchu.
Nagłówki celu dotarły; treść stoiSposób przesyłania przez serwer źródłowy, buforowanie pośredników i ewentualną celową ciszę aplikacji.

Kolejność uzgodnień opisuje artykuł jak CONNECT przenosi HTTPS. Zatrzymanie blisko limitu połączenia wskazuje na ustanawianie; późniejsze zatrzymanie na limicie całkowitym wskazuje na nieukończony transfer. Analizuj kolejność razem z czasem — sam czas nie identyfikuje komponentu. Treść logów różni się między kompilacjami curl, a otwarty port TCP nie dowodzi działania CONNECT.

Pozostaw jedną stronę bez zmian

Porównaj ten sam cel przez dozwoloną trasę bezpośrednią:

curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/

Następnie porównaj inny nieszkodliwy cel przez to samo proxy. Jeśli zawodzi tylko jeden, zbadaj jego trasę lub zasady dostępu. Jeśli wszystkie zatrzymują się na tym samym etapie ustanawiania, zbadaj wspólną ścieżkę proxy. Zapisz czas rozpoczęcia, punkt końcowy, cel i ostatni ukończony etap; przed udostępnieniem logów usuń dane logowania, tokeny, pliki cookie i prywatne nazwy.

Gdy połączenie pozostaje otwarte bez użytecznego postępu

Transfer pliku może wymagać progu niskiej prędkości oprócz limitów ustanawiania i całkowitego czasu:

curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 60 --speed-limit 100 --speed-time 20 https://example.com/

To przerywa operację, gdy utrzymująca się prędkość transferu pozostaje poniżej 100 bajtów na sekundę przez 20 sekund, przy zachowaniu całkowitego limitu 60 sekund. Dobierz wartości do zadania. Strumień zdarzeń może działać prawidłowo podczas długiej ciszy, więc reguła pobierania może go błędnie przerwać.

Zwiększenie wszystkich limitów odsuwa objaw. Natychmiastowe ponowienia mogą dodawać połączenia do przeciążonej ścieżki. Diagnozuj za pomocą kilku przemyślanych porównań; późniejsza polityka ponowień aplikacji wymaga własnego całkowitego budżetu i oceny bezpieczeństwa powtarzania operacji.

Powiązane artykuły