1
Yuicon OP 有大神知道原因么,看到自己接口只有 20 不到的 qps,我急啊
|
2
fkdog 2019-11-26 14:46:10 +08:00
因为 spring 注入的类都是通过 cglib 之类的字节码框架增强代理过的,经过反射之类的机制性能肯定会下降。
但是 200-300ms 就有点夸张了。 你确定不是其他地方有干扰。 |
4
lhx2008 2019-11-26 14:50:10 +08:00 via Android
我不知道你是从哪里算起,如果是 HTTP 算起,你可以拋异常看一下调用栈有多深,这个速度也很正常
|
6
sagaxu 2019-11-26 14:53:57 +08:00 via Android
正常几万 QPS 还是有的,框架本身消耗不大
|
7
Yuicon OP @sagaxu 我测了下 redis 只有 1ms 的消耗 但是被 bean 的方法一包 一下就 2-300ms 的速度了 那些几万 qps 的都是不用 spring 的么
|
8
passerbytiny 2019-11-26 15:00:22 +08:00
cglib 或者对象代理,应该也只是初始化 Bean 的时候慢,反射机制虽然慢一点,但这个慢只是略微慢,不做针对性测试可能就测不出来。
我能想到的有两个原因:一,配置了切面,切面慢;二,bean 不是单例模式,每次都会初始化。 |
9
Yuicon OP @passerbytiny 确实是你说的切面的问题,我才发现在类级别配置了事务 去掉后就是正常的 0.00001ms 了
|
10
huhujin 2019-11-26 15:43:05 +08:00
spirng 的 bean 只是在初始化的 时候 一般单例初始化好了.调用 就算经过几个 aop 也不慢很多.200ms 都是 api 返回的速度; 和代码执行不是一个数量级的.
|
13
gz911122 2019-11-26 15:52:23 +08:00
感觉你测错了...
bean 的注入是注入时的耗时,调用时是正常的.. 所以原因如 8L 说 一,配置了切面,切面慢;二,bean 不是单例模式,每次都会初始化。 |
14
LuckyBoyGirl 2019-11-26 15:59:21 +08:00
调用 spring 注入以后,再调用一次试试,看看多长时间
|
15
Yuicon OP @LuckyBoyGirl 问题是事务的锅,去掉后就没问题了
|