Spring高并发下Cglib代理性能问题

bluefcxt 2014-06-26 10:35:06
这两天做压力测试(服务器是IBM P750 8C 32G),高并发下如果用反射直接调用一个简单的服务(空方法,直接return)TPS大概能到将近300,如果用Spring的applicationContext getBean来获取服务对象调用的话(服务bean是prototype类型),TPS只有不到90。

在日志里记录了一下执行时间,用反射调用服务执行时间基本在10毫秒以内,但是用Spring的ApplicationContext执行时间在1秒左右。

这样的问题是不是cglib代理引起的?有什么解决办法?

补充一下,测试时服务器资源正常,CPU、内存、IO都很低
...全文
559 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你还是先确定哪一步操作耗时比较久。
bluefcxt 2014-06-26
  • 打赏
  • 举报
回复
一个工具类实现ApplicationContextAware获取context,通过context.getBean()获取服务对象
  • 打赏
  • 举报
回复
Spring的applicationContext getBean这种是如何使用的?看看你代码。是每次都加载beans.xml,还是运行之后获取的applicationContext ?
bluefcxt 2014-06-26
  • 打赏
  • 举报
回复
引用 6 楼 zuiai_LJX 的回复:
为什么要prototype,spring默认不是singleton吗
业务需要,不能用单例。现在就是压测的时候性能上不去,目前分析就是Spring的问题。
zuiai_LJX 2014-06-26
  • 打赏
  • 举报
回复
为什么要prototype,spring默认不是singleton吗
xinlan1022 2014-06-26
  • 打赏
  • 举报
回复
反射时间肯定要多一点
bluefcxt 2014-06-26
  • 打赏
  • 举报
回复
已经挺确定了吧,在调用前记录一个时间,调用后记录一个时间,本身我执行的是个空方法,剩下的不是spring动态代理所用的时间么

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧