Hết thời gian chờ proxy trong curl: tìm bước bị lỗi
Tách kết nối proxy, thương lượng đường hầm, TLS và phản hồi bị đứng để các giới hạn thời gian của curl giúp xác định lỗi.
Tìm thao tác hoàn tất cuối cùng trong đầu ra chi tiết của curl. “Đã kết nối proxy nhưng không có phản hồi CONNECT” thu hẹp vấn đề tốt hơn nhiều so với “proxy hết thời gian chờ”.
Dùng yêu cầu có giới hạn thời gian và thay ví dụ cục bộ bằng proxy HTTP của bạn; danh sách proxy HTTP là nơi tìm điểm cuối khác để so sánh:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/--connect-timeout 5 cấp một ngân sách thời gian chung cho việc thiết lập kết nối, gồm các tra cứu và bắt tay liên quan; không cấp riêng năm giây cho từng giai đoạn. --max-time 15 giới hạn toàn bộ thao tác, gồm thời gian truyền sau khi thiết lập.
| Tiến trình dừng ở đâu | Kiểm tra tiếp điều gì |
|---|---|
| Không kết nối được proxy | Phân giải tên máy proxy, cổng lắng nghe, định tuyến và chính sách tường lửa. |
| Đã nối proxy; không có phản hồi đường hầm | Tải proxy, thương lượng xác thực, chính sách truy cập và khả năng tới đích từ proxy. |
| Đường hầm được chấp nhận; TLS chưa xong | Khả năng tới đích, thương lượng TLS và việc chặn bắt lưu lượng có quản lý. |
| Đã nhận tiêu đề từ đích; phần thân đứng | Hành vi truyền của máy chủ gốc, bộ đệm trung gian và việc ứng dụng có chủ ý im lặng hay không. |
Về thứ tự bắt tay, xem cách CONNECT mang HTTPS. Dừng gần ngân sách kết nối gợi ý lỗi thiết lập; dừng muộn hơn ở giới hạn tổng gợi ý truyền chưa hoàn tất. Kết hợp trình tự với thời gian; chỉ thời gian không thể xác định thành phần. Câu chữ nhật ký khác nhau giữa các bản dựng curl, và cổng TCP mở không chứng minh CONNECT hoạt động.
Giữ cố định một phía
So sánh cùng đích qua tuyến trực tiếp được phép:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Sau đó so sánh một đích vô hại khác qua cùng proxy. Nếu chỉ một đích thất bại, kiểm tra tuyến hoặc chính sách của đích đó. Nếu mọi đích đều dừng ở cùng bước thiết lập, kiểm tra đường đi chung qua proxy. Lưu thời điểm bắt đầu, điểm cuối, đích và giai đoạn hoàn tất cuối cùng; xóa thông tin đăng nhập, token, cookie và tên riêng tư trước khi chia sẻ nhật ký.
Khi kết nối vẫn mở nhưng không có tiến triển hữu ích
Truyền tệp có thể cần giới hạn tốc độ thấp ngoài giới hạn thiết lập và tổng thời gian:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 60 --speed-limit 100 --speed-time 20 https://example.com/Lệnh này hủy khi tốc độ truyền duy trì dưới 100 byte mỗi giây trong 20 giây, đồng thời giữ trần tổng là 60 giây. Chọn giá trị theo khối lượng công việc. Luồng sự kiện có thể vẫn khỏe trong khoảng im lặng dài, nên quy tắc tải xuống có thể ngắt nhầm nó.
Tăng mọi giới hạn chỉ trì hoãn triệu chứng. Thử lại liên tục ngay lập tức có thể thêm kết nối vào đường đi quá tải. Chẩn đoán bằng vài phép so sánh có chủ đích; chính sách thử lại của ứng dụng về sau cần ngân sách tổng riêng và cân nhắc việc lặp lại thao tác có an toàn không.