高楼的性能工程课-010-设计基准场景

基准场景
    基准场景是为了找到系统中明显的配置及软件 Bug
        线程数应该如何确定?
        压力线程的连续递增的重要性
        如何分析
    
    性能场景分类:
        验证:评估当前系统容量;针对当前的系统、当前的模型、当前的环境,验证一下版本是否有性能的变化。不性能分析,不调优。
            基准场景
            容量场景
            稳定性场景
            异常场景
        调优:评估并优化当前系统;针对当前的系统、当前的模型、当前的环境,做性能监控+性能分析+性能调优+调优后的结论
            注意:我们所说的结论不仅仅是给出TPS多少,资源消耗多少,而且是应该有业务含义的,比如支持1000万用户在线,支持1万用户并发等
            
            基准场景
            容量场景
            稳定性场景
            异常场景
        推算:评估并推算未来系统容量。业务增长模型分析 性能监控+性能分析+性能调优+调优后的结论
            基准场景
            容量场景
            稳定性场景
            异常场景
            
    按过程分类:
        递增
        连续
    
    基准场景:
        1. 首先做单接口的基准场景
            线程数 = 目标TPS / 单线程稳定TPS = 500TPS/20TPS=25 线程数
            
            注意:我们这里的目标TPS=500TPS是一个经验值,对于一个8C16G的机器,如果是写操作达到500TPS是没问题的,如果是读操作可以达到1000TPS。
            
            duration 场景时间持续放长一点,产生一个明显的连续的递增的过程
            总结一下整个思路:
            <1>. 先确定单线程运行时的 TPS 值;上面的20TPS
            <2>. 根据系统最大的预估容量设置场景中的线程数、递增参数等。强调一下,如果你不会预估容量,可以直接多加一些线程,然后在递增的过程中查看曲线的变化;
            <3>. 确定正式基准场景的压力参数。
            <4>. 在测试过程中不断地修正。

            基准场景的目的:
                <1>. 获得单接口最大 TPS:如果单接口最大 TPS 没有超过容量场景中的要求,那就必须要调优。那如果超过了,看能否优化到最高TPS?
                <2>. 解决单接口基准场景中遇到的性能问题
                    遇到性能瓶颈一定要分析,可以分两个阶段
                    1. 硬件资源用完--CPU/内存/网络/IO等资源中任何一个用尽
                    2. 优化到最高TPS
                    
                    分析过程
                    1. 针对响应时间长的问题,我们首先要做的就是拆分时间。
                    2. 找到具体慢在哪一步,然后
                        打印一个完整的栈,看看调用链路,
                        或者不打印栈,直接连接到Java进程中看看方法消耗时间,工具包括JDB/JvisualVM/Arthas
                    
        我们使用Arthas 进行跟踪                
        trace com.dunshan.mall.auth.controller.AuthController postAccessToken '#cost > 1000' -n 3
        trace org.springframework.security.oauth2.provider.endpoint.TokenEndpoint postAccessToken '#cost > 1000' -n 3
        trace org.springframework.security.oauth2.provider.token.AbstractTokenGranter getOAuth2Authentication '#cost > 1000' -n 3
        trace org.springframework.security.authentication.AuthenticationManager getOAuth2Authentication '#cost > 500' -n 3
        trace org.springframework.security.authentication.ProviderManager authenticate '#cost > 500' -n 3
        trace org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider authenticate '#cost > 500' -n 3
        然后翻到代理看看具体做了啥
        
        
            
            

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值