【发布时间】:2013-01-19 23:55:02
【问题描述】:
我正在为重定向脚本编写基准测试。
我希望我的程序查询重定向到 AppStore 的特定 URL。但我不想下载 AppStore 页面。我只想记录重定向 URL 或错误。
如何在没有第二次重定向查询的情况下告诉 Go to query URL?
更新
两个答案都是正确的,但是:
我尝试了这两种解决方案。我正在做基准测试。 我使用 10 - 500 个 go 例程运行 1 个或多个 go 进程。他们循环查询 URL。 我的服务器也是用 go 写的。它每秒报告请求数。
- 第一个解决方案:
http.DefaultTransport.RoundTrip- 运行缓慢,出现错误。 前 4 秒工作正常。进行 300-500 次查询然后性能下降到每秒 80 次查询。
然后下降到每秒 0-5 个查询,并且 queryies 脚本开始出现类似的错误
dial tcp IP:80: A connection attempt failed because the connected
party did not properly respond after a period of time, or established
connection failed because connected host has failed to respond.
我猜它会重用已关闭的连接。
- 第二种解决方案:
CheckRedirect field以恒定的性能工作。我不确定它是重复使用连接还是为每个请求打开一个新连接。我为循环中的每个请求创建client。这就是它在现实生活中的行为方式(每个请求都是一个新连接)。有没有办法确保在每次查询后关闭连接并且不再重复使用?
这就是为什么我要标记第二个解决方案来回答我的问题。但是对于我的研究来说,每个查询都是一个新的连接是非常重要的。如何确保第二个解决方案?
【问题讨论】: