|
问题已经解决了,解决思路和流程如下分享出来经验给新人和其他爱好者吧
问题:如何提升多线程时速?
分析1:1.假想目标是200W/h 那么我们需要多少线程?每个线程最大执行时间是多少毫秒?每分钟需要完成多少次?
论证分析1:目标200W每小时那么公式如下,因1小时=60分*60秒,故200W / 3600秒 得到每秒需要完成数为:555条,那么每秒需要完成555条,则需要保证一个前提,将单线程耗时优化至:1秒耗时,排查代码后发现具体优化点有两个地方的严重耗时:第一处为获取代理,第二处为提交POST,那么提交POST优化方案为先设置超时时间为500ms(这里因为目标服务非常活跃),然后再次测试POST是否正常发现完全正常,那么继续缩短寻找最佳临界点,最后定为:300ms,那么开始优化获取代理,这里的获取代理使用了鱼刺的代理池,我的优化方案如下:启动线程前提前获取线程数3倍的代理进代理池后允许,并且设置动态补充阈值为2000,设置验证时间为1s高于1s的垃圾IP统统不要了!接下来整个线程耗时为:400ms。那么我们最初其实面临一个问题如下
问题2:什么样的机器能够支撑555线程且稳定运行几个小时线程没有一个阻塞?
论证分析2:几乎没有那样的机器,这里机器配置调整为 24核CPU,555发现也会有问题 严重阻塞,此时我们发现 400ms最快一个线程 我们预计的是 每秒一个 几乎浪费我们优化至 每秒2个,怎么做呢?其实已经做到了 我们放低线程数为300 即可 ,此时速度已经飙升至 将近 300W
如上就是我的整个优化过程,希望对读者 有所帮助 |
|