Tôi có một ứng dụng thu thập thông tin các trang web. Có vẻ như sau 20-45 phút của việc tạo HttpWebRequests, một loạt trong số họ trả về thời gian chờ. Một điều chúng tôi làm là đính kèm một chức năng ẩn danh BindIPDelegate
để cung cấp cho một yêu cầu một IP cụ thể kể từ khi chúng tôi round-robin thông qua khoảng 150 IP.Sau khi thực hiện HttpWebRequests trong một thời gian, kết quả bắt đầu tính thời gian ra
Tôi đang thiết lập đối tượng HttpWebRequest
với các cài đặt sau ..
- Thiết User-Agent
- Thiết Keep-Alive false để các IP không tái sử dụng
- thiết TimeOut đến 60000 (60 giây)
- thiết ReadWriteTimeout đến 60000 (60 giây)
- thiết Proxy null
- Setti ng Chấp nhận để /
- Thiết CookieContainer để CookieContainer mới
- Thiết Piplined true
- Thiết tự động giải nén để Deflate & GZIP
ứng dụng đang sử dụng .NET 4.0 và chạy trên Windows Server 2008 R2.
Điều này chắc chắn có vẻ giống như một ứng dụng/TCP/.NET có liên quan bởi vì nếu tôi khởi động lại ứng dụng nó chạy tốt trở lại. Ngoài ra nó xuất hiện nhiều hơn hoặc ít hơn như những thời gian ra chỉ là xếp hàng chờ đợi trên một cổng địa phương hoặc một cái gì đó.
Bất kỳ ý tưởng nào?
Bạn đang thực hiện cuộc gọi không đồng bộ hoặc đang chờ cuộc gọi? – WeNeedAnswers
Đồng bộ, chặn cuộc gọi. –
thử quay lại cuộc gọi không đồng bộ. Có thể không giải quyết được vấn đề của bạn nhưng chúng sẽ phân loại các vấn đề nhức đầu khi sử dụng httpWebRequest. Tôi sẽ nói rằng nó có cái gì đó để làm với threadpool, nhưng mà không nhìn vào mã của bạn tôi không thể nói chắc chắn. Không bao giờ làm đau Async gọi lại thay vì bắn lên chủ đề. Bạn sử dụng threadpool? – WeNeedAnswers