多线程-网络请求线程数设置

自己闲暇时,也曾尝试实现过简单的线程池,对高并发有过预生产的压测和调优,然而一直我都是作为服务提供方在做多线程。

 

最近,接过一个服务消费方的代码,看过代码,实现上并没有看出问题,每秒也有过千的请求并发效果,但是领导要求完成每秒两万。

凭借我一直的实践和阅读,理论上 线程数 = 2*CPU数时,可以达到一个最优的性能表现。

当下机器配置 12台 8C 机器,理论每台 16线程相对不错了。

按服务方说明,http请求,响应延时 10ms

计算理论值 200ms(tcp握手+延时) ,每秒每个线程可以 5次请求。

 

问题来了,16线程见鬼去吧。

 

猜测,16线程的理论值应该是非网络环境或者长连接情况下的一个结果。

16线程的最优是考虑了线程调度的花费,而在tcp握手面前,这个调度几乎应该忽略,重新计算线程数,20000  / 12 / 5 > 333

理论上是这样的,情况可能会比我想象的要好一些吧!

 

实际生产将会发生什么,是我一直都不敢给领导保证的,实际结果还是在千级徘徊。

猜测是,服务方的说明和实际性能不符。

本想和代码作者分析个可能的原因,然而接手的锅还是得自己动手,添加日志。

一路日志重新请求,日志显示,实际服务方的响应延时在10ms-10s不等,且多数响应实际为4s。

永远不要完全相信服务方的承诺,尤其国内,我的脑子里冒出这个曾经的经验。

 

线程数干到千级不多说,虽然仍未达到预期,但也已能够解释原因和完成基本场景要求。

准备收拾下班,愿明天 不再如此泥泞。

 

补充:

  考虑到国内运营商间网络的通信延时,可能服务方并没有谎报他们的响应延时(他们服务器的处理时间10ms)。

至于中间是否存在更多中转可能都会对网络请求响应贡献时间。

转载于:https://www.cnblogs.com/qq1144054302/p/10381318.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值