多站点每秒并发100个异步请求时,新增单个请求是否会变慢?
问题解答
这个额外请求的速度大概率会比单独发送时略慢一点,但差异极小,几乎可以忽略,具体原因和优化方向如下:
- 线程资源竞争:你当前用10个线程维持每秒100个请求,这些线程已经在占用CPU调度时间和本地网络的带宽、端口资源。新增线程发起请求时,会和原有线程竞争这些资源,但因为这个额外请求每分钟才跑一次,单次请求耗时很短,这种竞争带来的延迟几乎感觉不到。
- requests的同步特性:requests本身是同步HTTP库,每个线程里的请求都是阻塞等待响应的,但你靠多线程实现了并发。新增的线程请求和原有线程的请求逻辑一致,只是多了一个临时的资源竞争方,不会对整体资源造成持续占用。
- 网络环境的影响更大:实际请求速度主要还是看目标站点的响应速度、网络链路状况。如果目标站点本身响应快,哪怕有轻微的本地资源竞争,最终的耗时差异也很难察觉。
如果想尽量让这个额外请求的速度接近单独发送的状态,可以试试两个小办法:
- 给额外请求的线程设置更高的优先级(Python的
threading模块可以用thread.setPriority()调整,不过不同系统的支持程度不一样),让它在CPU调度时能优先拿到时间片。 - 避开原有请求的峰值时段触发额外请求,比如在每秒100个请求的间隙(比如每秒末尾)发起,减少资源重叠的情况。
内容的提问来源于stack exchange,提问作者user18191682
相关产品推荐
相关产品推荐

