开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3926|回复: 10
收起左侧

[易语言] 易语言POST请求时速突破百万请求的优化建议讨论

[复制链接]
结帖率:100% (17/17)
发表于 2022-5-21 16:21:20 | 显示全部楼层 |阅读模式   上海市上海市
  如题,本贴针对POST时速突破百万请求 吞吐量进行讨论和研究。这里选用了  度娘.com 的网站下某无加密接口测试,目的为突破每小时百万的吞吐量!!  那么影响速度的程序方面探索原因:1.多线程+代理架构  2.网站接口服务响应时间  3.冗余代码 4.I/O硬件影响的线程
  这里的多线程架构 采用鱼刺官方开源多线程 + api代理架构,网站接口服务相应时间在 156ms 冗余代码进行整理 如无必要的低代码,硬件方面采用了I7 英特尔 CPU,本身计算机环境是 4核16G、网页访问对象作为本次的httpAPI选型
   针对代理进行一次检测过滤了大于 2s的垃圾代理IP,网页访问对象设置 2s的超时,最后进行一次500W目标测试,发现时速仅仅在13W左右
   能想到的 软件 解决方案基本应该都想到了,硬件就不太懂了,如题向各位大佬发问,也欢迎各位进行技术讨论!


补充内容 (2022-5-21 16:24):
时速计算策略:完成数/[ (当前时间戳-开始时间戳) / 1000]*3600

补充内容 (2022-5-21 16:30):
测试线程数为:30

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (17/17)
 楼主| 发表于 2022-5-22 12:51:43 | 显示全部楼层   上海市上海市
问题已经解决了,解决思路和流程如下分享出来经验给新人和其他爱好者吧
问题:如何提升多线程时速?
分析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

如上就是我的整个优化过程,希望对读者 有所帮助
回复 支持 反对

使用道具 举报

结帖率:100% (17/17)
 楼主| 发表于 2022-7-9 19:15:20 | 显示全部楼层   上海市上海市
已自行解决麻烦管理版主进行删贴
回复 支持 反对

使用道具 举报

结帖率:100% (59/59)

签到天数: 1 天

发表于 2022-5-21 18:03:16 | 显示全部楼层   湖北省武汉市
多线程+集群=200万时速都可以
回复 支持 反对

使用道具 举报

结帖率:92% (77/84)
发表于 2022-5-21 18:09:10 | 显示全部楼层   江苏省常州市
比较好奇的一点是   在不使用超级列表框的情况下   文本导入至软件内怎么在多线程操作时批量分割并操作  尝试过这种实际发现这样操作结果还是单线程一样
回复 支持 反对

使用道具 举报

结帖率:100% (17/17)
 楼主| 发表于 2022-5-21 18:21:58 | 显示全部楼层   上海市上海市
顶级娱乐· 发表于 2022-5-21 18:03
多线程+集群=200万时速都可以

我又换了一台24核的服务器 每小时60W 速度..
回复 支持 反对

使用道具 举报

结帖率:100% (17/17)
 楼主| 发表于 2022-5-21 18:26:59 | 显示全部楼层   上海市上海市
第二轮测试:24核服务器 吞吐量每小时 60W...
回复 支持 反对

使用道具 举报

结帖率:100% (59/59)

签到天数: 1 天

发表于 2022-5-21 19:31:25 | 显示全部楼层   湖北省武汉市
你送的花开了 发表于 2022-5-21 18:09
比较好奇的一点是   在不使用超级列表框的情况下   文本导入至软件内怎么在多线程操作时批量分割并操作  尝 ...

取文本总行数÷分割数,分给各线程执行
举例 总行数100
我想开十个线程 我就设定分割数为10
100÷10=10 就得到每个分割数
然后分十条线程执行 第一条线程执行1-10第二条执行11-20以此类推  分割数递增通过判断和算法或累加都可实现

补充内容 (2022-5-21 19:33):
分割数不一定必须和开多少线程成正比  这只是举例 可以举一反三去理解
回复 支持 反对

使用道具 举报

结帖率:92% (77/84)
发表于 2022-5-22 01:53:54 | 显示全部楼层   江苏省常州市
顶级娱乐· 发表于 2022-5-21 19:31
取文本总行数÷分割数,分给各线程执行
举例 总行数100
我想开十个线程 我就设定分割数为10

原来如此  谢谢解惑
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)
发表于 2022-5-25 16:41:28 | 显示全部楼层   山西省临汾市
你送的花开了 发表于 2022-5-21 18:09
比较好奇的一点是   在不使用超级列表框的情况下   文本导入至软件内怎么在多线程操作时批量分割并操作  尝 ...

比方说你导入到程序内的数据存储到数组里了  你可以在每个子线程开始时  用许可证 去递增一个索引 然后用此索引来取数组内的对应值
回复 支持 反对

使用道具 举报

结帖率:76% (13/17)
发表于 2022-7-5 22:58:36 | 显示全部楼层   湖北省十堰市
黑骑士ol 发表于 2022-5-22 12:51
问题已经解决了,解决思路和流程如下分享出来经验给新人和其他爱好者吧
问题:如何提升多线程时速?
分析1 ...

谢谢,,,有点启发。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表