我正在维护一些网络爬虫。我想改进我们的负载/节流系统,使其更加智能。
当然,我会查看响应代码,并根据该代码调高或调低速率。但我希望系统能够更好地根据所请求服务器的行为动态调整速率。假设这是一天中非常繁忙的时间,并且目标 Web 服务器正在经历异常高的流量或其他问题。然后我想检测到它,出于礼貌而调低我方的请求,并在服务器恢复正常时重新调高速率。
哪些症状会让我断定要减速?哪些症状会让我再次加速?
我一直在考虑记录每个请求的响应时间,例如过去一小时。问题是,很难找到一个合理的平均/中位请求时间作为基准,因为所有服务器都不同,甚至同一网站内的资源响应速度也有很大差异。我一直在考虑的另一件事是寻找响应时间的波动,但我不知道这是否是一种常见症状,或者更常见的是所有请求都需要更长时间。