首页 新闻 会员 周边 捐助

京东面试题,服务器数量计算,线程与服务器数量计算

0
悬赏园豆:20 [待解决问题]


有一个原有系统,每秒钟生成1000条订单记录;

现在需要开发一个新系统,需要将每条记录取出并推送给其它系统;系统使用http请求将记录通知给其他系统(注意:一条记录,需要按顺序发送3次http请求,此处为同步调用,每个请求处理需要3秒钟,按顺序执行,则该方法共需要9秒钟才能执行结束);

请问?
问题一: 如此高的数据量, 一台4核的cpu服务器,通常最大开启多少个线程用于http发送?
问题二: 按上面的数据,每条记录处理时间需要9秒钟,可以开启多线程,那么一台机器每秒可以完成多少条记录的http请求?
问题三: 部署多少台服务器,可以应对每秒新增1000条记录的需求; 应该按什么思路计算?

问题四:如果是4核CPU,那么开100个线程和开5个线程的执行效果是不是一样,线程多了反而会造成频繁切换线程问题,反而更慢,对不?

如果没介绍清楚,请看图片!!

请问  每秒1000条数据处理, 每条记录处理需要9秒钟,请问需要部署多少服务器? 

柠檬树上的主页 柠檬树上 | 初学一级 | 园豆:184
提问于:2018-04-14 22:35
< >
分享
所有回答(2)
0

异步回调模型.所以100个线程和5个线程差别是非常大的.

因为是发起请求后等待io响应3秒.

这个问题本身问题很大.要是后端处理服务器数量够多.

重点压根就不是前面这个发起一个http请求的服务器.而是后台需要处理3秒的服务器.

吴瑞祥 | 园豆:29449 (高人七级) | 2018-04-14 23:20

请问  每秒1000条数据处理,每条记录处理需要9秒钟,请问需要部署多少服务器? 怎么算?

支持(0) 反对(0) 柠檬树上 | 园豆:184 (初学一级) | 2018-04-14 23:26

@寒山空明月: 没法算.具体问题具体分析.已知条件总共就这么点.

难道说1000*9=9000台服务器吗.也没说是单线程9秒.还是多线程9秒.

我猜是一个脑筋急转弯.每秒1000个请求.一个请求9秒.也就是说一共需要9000个线程.

然后一台电脑开1500个线程算.那就是6-7台.只需要考虑线程数就行.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2018-04-14 23:32
0

问题一:4,四核就4个,开多了就有线程切换。

问题二:什么叫处理?如果是异步模型,可以一次仍一千哇。。。

问题三:9台。通过轮训处理。第一台,1~9s;第二台,2~10s,第9台:9~18,此时第一台空闲,开始18~26s。

问题四:看具体场景,有可能一样,有可能不一样。线程多了,确实会频繁切换。

 

BTW:这题我觉得更应该直接和面试官沟通,如果是笔试,没太大意思。

幻天芒 | 园豆:37207 (高人七级) | 2018-04-14 23:37

问题二: 这个是同步请求的,每条记录需要处理9秒;一个4核cpu服务器,每秒钟即使开启多线程,能处理多少条记录?

 

问题三: 按照每条记录需要处理9秒钟, 4核cpu服务器,部署9台,就能完成每秒钟1000条记录的发送么?(http发送是同步的,一个记录处理共用9秒)

 

我这样理解的,不知道对不对?  

  每秒1000条记录,每条记录需要9秒;   所以9秒钟产生了9000条记录;  

 

  4核服务器,如果是cpu运算型线程,好像是推荐的线程数是: 核心数+1;-->不知对不对

  但这个题是io运算型,所以开启的线程数是 :核心数*50  以内;-->不知对不对

 

  我们就当他可以开启200个线程吧; 即200个线程同时处理;200个线程处理9秒, 则处理了200条记录;

  9秒的时间产生9000记录,9秒每台机器处理200条记录; 9000/200=45台服务器;

  这结论正确么?

支持(0) 反对(0) 柠檬树上 | 园豆:184 (初学一级) | 2018-04-15 00:39

@寒山空明月: 条件不足,很难有明确的结论。建议直接和面试官讨论。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2018-04-15 00:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册