线程个数到底怎么设置?

其实大部分人会说这个问题,傻子才问,实验一下不就知道了。是的实验一下就知道了,但是并不是每个人都愿意动手的。世界上还一种人不傻,但是懒。哥也是其中一员。

之前一直没闹懂cpu核数和线程数的关系什么,我一直以为2核8线程是指:两个物理上的核同时可以处理8个线程。(这里的同时是绝对意义上的同步处理。)但是我搜了一下,貌似并不是,之前理解完全错误。

参考:https://zhidao.baidu.com/question/564747175879215284.html

           https://www.cnblogs.com/hitwhhw09/p/4718404.html

最近做个http请求。有点大 几千万次。给我的机器是2核40线程。所以我想啊40线程可以同时处理40个线程,按照网上说的设置2-3倍,让他跑吧。然后我设置了80个,跑了一两天。崩了!带我的那个人更牛逼,直接设置3w个线程。然后觉得慢,就说你去做个试验看看,线程设置多少合适。然后实现数据如下:

试验数据

connectionTimeOut指http请求超时设置,soTimeOut指等待返回时间超时。我们场景是希望请求获得有效返回。

从试验数据上看,单纯从处理速度,不管suc的话,设置在机器线程数量的10倍左右合适。如果从成功结果上看(抛开超时设置)越接近物理核数设置,请求成功率越高。

具体原因因为大概可以猜到,但是抱着严谨精神,我就不说了(我没查,但是学过计算机组成原理和操作系统,所以大概理解)。希望大家自己去查吧。

尽然数据贴出来了,就结合着数据找点经验吧。抛开 http因素。多核多线程情况下 线程数 设置 为线程数的10倍左右处理速度应该最快。

http请求照顾到成功率情况,request超时设置大点更为合理,根据http 响应服务器来定,我们这个应该2-4s直接合理,response超时设置500足够。线程数量应设置在50-240之间,具体大小应该计算或者再细测获得。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,242评论 19 139
  • Java继承关系初始化顺序 父类的静态变量-->父类的静态代码块-->子类的静态变量-->子类的静态代码快-->父...
    第六象限阅读 2,181评论 0 9
  • 老师讲的第五课,主要就是说,要用微信来赚钱的话,首先要明白,要用微信交朋友。第二呢?你要有资源。因为只有资源互换,...
    杜为娜阅读 487评论 0 0
  • 地上的裂缝 可以修补 心上的裂缝 可以补吗? 补完了还可能是 原来的心吗? 如果可以 我愿意把十八岁那年 打碎的一...
    向日葵爱呀爱太阳阅读 298评论 0 0
  • 我从未和父亲这样走着,像个朋友一样,时值八九月,夜晚的风有点咧人,他穿得有些单薄,当单薄的身子被路灯...
    NZ参年阅读 1,049评论 5 10