Tôi cần gửi khoảng 200 yêu cầu HTTP song song với các máy chủ khác nhau và nhận phản hồi. Tôi sử dụng lớp HttpWebRequest trong C#. Nhưng tôi không thấy tăng cường thời gian tốt khi các yêu cầu được xử lý song song. Ví dụ nếu một yêu cầu cần 3 giây để nhận phản hồi, 2 yêu cầu song song - 6ec, 3 yêu cầu - 8 giây, 4 yêu cầu - 11 giây ... Không tốt, tôi hy vọng rằng sẽ có thời gian tốt nhất, khoảng 10 giây cho 200 yêu cầu. Dường như chỉ có 2-3 yêu cầu thực hiện song song, nhưng thời gian chờ bắt đầu ngay lập tức sau khi tạo đối tượng WebRequest. Tôi đã thử đặt các giá trị DefaultConnectionLimit
và MaxServicePoints
nhưng id không được trợ giúp. Khi tôi hiểu các thông số này cho số yêu cầu đến một trang web song song. Tôi cần các yêu cầu đến các trang web khác nhau.Nhiều yêu cầu HTTP trong C#
Mã ví dụ mà tôi sử dụng để kiểm tra:
ArrayList a = new ArrayList(150);
for (i = 50; i < 250; i++)
{
a.Add("http://207.242.7." + i.ToString() + "/");
}
for (i = 0; i < a.Count; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(performRequest));
t.Start(a[i]);
}
static void performRequest(object ip)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create((stirng)ip);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
}
Сan ai đã từng gặp phải một vấn đề như vậy? Cảm ơn bạn đã đề xuất.
Tôi có vấn đề tương tự bản thân mình, có vẻ như WebRequest.Create() tái sử dụng cùng một kết nối TCP vì một lý do nào đó. Tôi tự hỏi nếu bạn phát hiện ra câu trả lời cho câu hỏi của bạn là gì? – ala