多人服务器单服务器承压力的一般算法

现在一般的游戏或网络公司都要求单服务器性能达到多少人,
有很多文章都没有探讨得特别清晰,
现在我从数据上给出一台服务器能支持多少人一个比较清晰的计算方法:

假设1: 如果服务器底层处理1个人和处理N个人的效率是一样
    (现在如果AIO和IOCP模式,一个连接和10000个连接效率差不多);
假设2: 网络带宽没有限制
    (如果数据协议设计合理,一般当CPU达到100%时,带宽消耗也不会很大)
假设3: 服务端资源没有限制
    (主要是指内存资源,对于现在机器,一般内存不是制约因素,但是连接资源一般要受到系统制约)

现在给出理想情况下的计算公式:
    平均服务响应时间(单位S)*单用户每秒请求数 ==> 单用户CPU时间
    处理器个数 * (1S) / 单用户CPU时间 ==> 服务器最大在线人数
    以上是理想情况下的压力计算公式,考虑到其他情况,可以将这一个算法*一个修正值。
    
    修正值主要有这几个:
        如果IO和或者等待其他任务消耗时间较多,可以适当提高线程或进程数,
        这里线程和进程数的理想设计为
           平均每处理器总时间 / ( 平均每处理器总时间 - 平均每处理器IO时间(或平均每处理器等待时间) )
           ==> 理想的线程(进程)数
           
        可以使用 线程(进程)数 / 处理器个数进行修正
    
    另外再乘以理想估计和实际估计偏差可以取(0.8)
    
    得到最终结果理想情况是这样
        0.8 * ( 处理器个数 * 1S ) / ( 平均服务响应时间(单位S)*单用户平均每秒请求数 ) ==> 最大在线人数
    
    加第一修正的最大线程人数
        0.8 * ( 平均每处理器总时间 / ( 平均每处理器总时间 - 平均每处理器IO时间(平均每处理器等待时间) ) )
        * ( 平均服务响应时间(单位S)*单用户平均每秒请求数 ) ==> 最大在线人数
        
    假设线程或进程数设计合理
        可以采用这个进行估算
        0.8 * 线程(进程)数 / ( 平均服务响应时间(单位S)*单用户平均每秒请求数 ) ==> 最大在线人数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值