Đặt thời gian chờ cho proxy Apache HttpClient 5 bị treo trong CONNECT
Đặt thời gian chờ socket I/O của trình quản lý kết nối cho việc thiết lập đường hầm, cùng với thời gian chờ kết nối TCP riêng.
Proxy đã chấp nhận TCP nhưng không bao giờ hoàn tất phản hồi CONNECT. Phản hồi của trang web chưa bắt đầu; một thời gian chờ chỉ nhắm vào phản hồi sau đó có thể khiến bước thiết lập này chờ vô hạn.
Với Apache HttpClient 5.3.1, hãy đặt các giá trị mặc định của trình quản lý kết nối:
var connection = ConnectionConfig.custom()
.setConnectTimeout(Timeout.ofSeconds(5))
.setSocketTimeout(Timeout.ofSeconds(10))
.build();
var manager = PoolingHttpClientConnectionManagerBuilder.create()
.setDefaultConnectionConfig(connection)
.build();
var client = HttpClients.custom()
.setConnectionManager(manager)
.setProxy(new HttpHost("http", "proxy.example", 8080))
.build();Dùng các lớp Apache HttpComponents 5 trong org.apache.hc, với Timeout trong gói tiện ích core5. Giữ lại ứng dụng khách cho công việc của nó và đóng nó. Đối với một thử nghiệm HTTP công khai riêng biệt, một ứng viên từ danh sách proxy HTTP cung cấp điểm cuối; giữ đích ổn định khi so sánh thời gian chờ.
| Giới hạn | Thời gian chờ được xử lý |
|---|---|
| Thời gian chờ kết nối | Thiết lập kết nối |
| Thời gian chờ socket | Trạng thái không hoạt động I/O mặc định, bao gồm trao đổi CONNECT |
| Lấy từ nhóm / phản hồi của ứng dụng | Các giai đoạn khác được cấu hình riêng |
Sau CONNECT, TLS có thể cần giới hạn thiết lập riêng thông qua cấu hình TLS của HttpClient 5. Cũng phân biệt trạng thái không hoạt động với hạn chót tổng thể: các byte ngắt quãng hoặc trao đổi xác thực lặp lại có thể kéo dài tổng thời gian. Dùng chính sách hạn chót hoặc hủy được ứng dụng hỗ trợ cho một ngân sách cho toàn bộ thao tác.