python每秒并发2000个请求_每秒处理请求数和并发是一个概念吗?

本文探讨了提高服务器每秒处理请求数(q)的方法,包括降低平均响应时间(t)和增加并发量(c)。通过优化代码来减少t可能效果有限,而增加c可能导致上下文切换开销增大。介绍了线程/进程模型对并发量的影响,以及在特定业务场景下,使用NIO模式如何提升并发能力。强调了找到合适并发量的重要性,以及针对‘小数据量、较长返回时间’业务的服务优化策略。
摘要由CSDN通过智能技术生成

不是同一个概念,但它们之间有联系:

设平均响应时间为t(单位为毫秒), 并发量为c,每秒处理请求数为q,则:

q = (1000/t) * c

就是这个关系;

想要升高q,就只有两条路:1) 降低t 2) 升高c

对于'1', 只能靠优化代码实现,只能尽量做,往往提升有限;

对于'2', 通常c与你服务器程序的请求处理模型有关,如果你服务器程序是“一个线程对应一个请求”的模式,那么c的最大值就受制于你能支撑多少个线程;如果是“一个进程对应一个请求”的模式,那么c的最大值则受制于最大进程数;

在升高c的过程中,不得不注意的一点是,线程/进程数越多,上下文切换、线程/进程调度开销会增大,这会显著间接地增大t的值从而不能让q跟着c的值等比升高, 所以一味增大c通常也不会有好结果,最合适的c值应该根据实测试验得出

另外,还有一种特殊情况:若业务决定了该服务器提供的服务具有“小数据量、较长返回时间”的特征,即这是一个不忙、但很慢的业务类型,那么可以采用NIO模式提供服务,比如nginx默认就采用nio模式;

在这种模式下,c值不再与线程/进程数相关,而仅仅与“socket连接数”相关,通常“socket连接数”可以非常大,在经过特殊配置的linux服务器上,可以同时支撑百万级别的socket连接数,在这种情况下c可以达到100w;

在如此高的c值之下,就算t再大,也可以支撑出一个很高的q,同时真正的线程/进程数可以只开到跟cpu核数一致,以求最大化cpu利用率;

当然这一切的前提是该业务具有“小数据量、较长返回时间”的特征

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值