spring 性能的疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Yuicon
V2EX    程序员

spring 性能的疑问

  •  
  •   Yuicon
    Yuicon 2019-11-26 14:43:35 +08:00 3159 次点击
    这是一个创建于 2149 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在性能优化,今天在测试的时候发现:
    我自己 new 的类调用方法只要 0.0001ms
    通过 spring 管理自动注入的方式,调用同样的方法就要 200-300ms????
    为了排除干扰方法内容都注释了直接返回 null
    15 条回复    2019-11-26 16:09:16 +08:00
    Yuicon
        1
    Yuicon  
    OP
       2019-11-26 14:46:00 +08:00
    有大神知道原因么,看到自己接口只有 20 不到的 qps,我急啊
    fkdog
        2
    fkdog  
       2019-11-26 14:46:10 +08:00
    因为 spring 注入的类都是通过 cglib 之类的字节码框架增强代理过的,经过反射之类的机制性能肯定会下降。
    但是 200-300ms 就有点夸张了。
    你确定不是其他地方有干扰。
    Yuicon
        3
    Yuicon  
    OP
       2019-11-26 14:48:06 +08:00
    @fkdog 排除了干扰 方法里没有内容 直接返回 null 了 强制使用 cglib 不用接口代理 也是一样的慢
    lhx2008
        4
    lhx2008  
       2019-11-26 14:50:10 +08:00 via Android
    我不知道你是从哪里算起,如果是 HTTP 算起,你可以异常看一下调用栈有多深,这个速度也很正常
    Yuicon
        5
    Yuicon  
    OP
       2019-11-26 14:51:01 +08:00
    @lhx2008 jmh 本地测的 直接调的 service
    sagaxu
        6
    sagaxu  
       2019-11-26 14:53:57 +08:00 via Android
    正常几万 QPS 还是有的,框架本身消耗不大
    Yuicon
        7
    Yuicon  
    OP
       2019-11-26 14:58:43 +08:00
    @sagaxu 我测了下 redis 只有 1ms 的消耗 但是被 bean 的方法一包 一下就 2-300ms 的速度了 那些几万 qps 的都是不用 spring 的么
    passerbytiny
        8
    passerbytiny  
       2019-11-26 15:00:22 +08:00
    cglib 或者对象代理,应该也只是初始化 Bean 的时候慢,反射机制虽然慢一点,但这个慢只是略微慢,不做针对性测试可能就测不出来。

    我能想到的有两个原因:一,配置了切面,切面慢;二,bean 不是单例模式,每次都会初始化。
    Yuicon
        9
    Yuicon  
    OP
       2019-11-26 15:21:42 +08:00
    @passerbytiny 确实是你说的切面的问题,我才发现在类级别配置了事务 去掉后就是正常的 0.00001ms 了
    huhujin
        10
    huhujin  
       2019-11-26 15:43:05 +08:00
    spirng 的 bean 只是在初始化的 时候 一般单例初始化好了.调用 就算经过几个 aop 也不慢很多.200ms 都是 api 返回的速度; 和代码执行不是一个数量级的.
    Yuicon
        11
    Yuicon  
    OP
       2019-11-26 15:49:50 +08:00
    @sagaxu qps 都是怎么统计出来的?在本地直接测么?放服务器感觉有网络延迟快不起来啊
    sagaxu
        12
    sagaxu  
       2019-11-26 15:51:56 +08:00 via Android
    @Yuicon 延迟不会降低 QPS,每个请求需要 1 秒也可以几万 QPS
    gz911122
        13
    gz911122  
       2019-11-26 15:52:23 +08:00
    感觉你测错了...
    bean 的注入是注入时的耗时,调用时是正常的..

    所以原因如 8L 说
    一,配置了切面,切面慢;二,bean 不是单例模式,每次都会初始化。
    LuckyBoyGirl
        14
    LuckyBoyGirl  
       2019-11-26 15:59:21 +08:00
    调用 spring 注入以后,再调用一次试试,看看多长时间
    Yuicon
        15
    Yuicon  
    OP
       2019-11-26 16:09:16 +08:00
    @LuckyBoyGirl 问题是事务的锅,去掉后就没问题了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     917 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 20:48 PVG 04:48 LAX 13:48 JFK 16:48
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86