我在Quartz中使用它。Net框架。每个作业(线程)只有一个web请求
这是检查清单:
-
所有一次性物品均用于使用块!
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) using (Stream stream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(stream)) str = reader.ReadToEnd();
- ServicePointManager。Expect100Continue=false
- ServicePointManager。DefaultConnectionLimit=1000
- ServicePointManager。最大服务点数=1000
- 请求。KeepAlive=false
- 请求。超时=5000
- 请求。读写超时=5000
- 请求。ServicePoint。ConnectionLeaseTimeout=5000
- 请求。ServicePoint。最大空闲时间=5000
我正在使用Stopwatch来测量web请求时间。这些是日志:
异常Web请求时间:16333毫秒
异常Web请求时间:8350ms
异常Web请求时间:9846ms
异常Web请求时间:7545毫秒
异常Web请求时间:6662ms
异常Web请求时间:18332毫秒
有什么想法吗
PS:这个问题是支持超时的多线程Web请求的摘要版本
我从这个问题中学到的唯一教训是:如果你在多个线程中使用HttpWebRequest,不要同步使用它!