spring-petclinic性能调优实战(转)
1.spring-petclinic介绍
spring-petclinic是spring官方做的一个宠物商店,结合了spring和其他一些框架的最佳实践。
架构如下:
1)前端
Thymeleaf做HTML模板引擎或纯JSP加Tag
CSS采用Bootstrap
webjars用来管理客户端依赖
Dandelion做表格
2)后端
Controller,用Spring MVC, Bean Validation
Service, 用Spring事务,加上ehcache缓存
Repository,写了3套,spring data jpa, jpa, jdbc,供大家自由选择
异常处理,统一交给SimpleMappingExceptionResolver处理,导向一个页面exception.jsp
2.性能调优
有专家对这个示例做了一些性能调优实战,使得性能从285 req/sec提升到了1225 req/sec。
性能调优实战一共分5天,对应5篇文章。
第1天,搭建jmeter测试环境,写jmeter脚本,测试一开始的性能是285 req/sec
第2天,用yourkit剖析问题,抓出元凶Dandelion,并解决性能问题,性能提升到560 req/sec。
随后去session化,性能变为532 req/sec。
再使用tomcat新的NIO connector,性能提升到867 req/sec
第3天,找到Commons DBCP乃又一元凶,改用tomcat dbcp,性能提升到910 req/sec。
Webjars也有损性能,所以去掉,性能提升到942 req/sec
去掉人为的monitoring AOP,性能提升到959 req/sec
第4天,测试发现spring data jpa, jpa, jdbc三种性能差别不大。
使用延迟加载和Open Session In View(要小心,有陷阱),性能提升到1066 req/sec
第5天,增加一个cache,用来缓存JpaOwnerRepositoryImpl.findByLastName(),性能提升到1225 req/sec
3.链接
官方原版petclinic
专家优化版petclinic
5篇优化文章,对应5天优化历程
Improving the performance of the Spring-Petclinic sample application (part 1 of 5)
Improving the performance of the Spring-Petclinic sample application (part 2 of 5)
Improving the performance of the Spring-Petclinic sample application (part 3 of 5)
Improving the performance of the Spring-Petclinic sample application (part 4 of 5)
Improving the performance of the Spring-Petclinic sample application (part 5 of 5)
原文链接:https://xpenxpen.iteye.com/blog/2146465
spring-petclinic性能调优实战(转)的更多相关文章
- JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码
本文是<JVM 性能调优实战之:一次系统性能瓶颈的寻找过程> 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍) ...
- JVM 性能调优实战之:一次系统性能瓶颈的寻找过程
玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈.性能优化分为好几个层次,比如系统层次.算法层次.代码层次…JVM 的性能优化被认为是底层优化,门槛较高, ...
- Apache Pulsar 在 BIGO 的性能调优实战(上)
背景 在人工智能技术的支持下,BIGO 基于视频的产品和服务受到广泛欢迎,在 150 多个国家/地区拥有用户,其中包括 Bigo Live(直播)和 Likee(短视频).Bigo Live 在 15 ...
- Java性能调优实战,覆盖80%以上调优场景
Java 性能调优对于每一个奋战在开发一线的技术人来说,随着系统访问量的增加.代码的臃肿,各种性能问题便会层出不穷. 日渐复杂的系统,错综复杂的性能调优,都对Java工程师的技术广度和技术深度提出了更 ...
- 高性能 Java 计算服务的性能调优实战
作者:vivo 互联网服务器团队- Chen Dongxing.Li Haoxuan.Chen Jinxia 随着业务的日渐复杂,性能优化俨然成为了每一位技术人的必修课.性能优化从何着手?如何从问题表 ...
- PHP 性能分析第三篇: 性能调优实战
注意:本文是我们的 PHP 性能分析系列的第三篇,点此阅读 PHP 性能分析第一篇: XHProf & XHGui 介绍 ,或 PHP 性能分析第二篇: 深入研究 XHGui. 在本系列的 ...
- Tomcat性能调优实战
今日帮朋友做了tomcat性能调优的实际操作,心得记录一下. 服务器:Windows2017 配置:CPU 4 内存 8G Tomcat8.0+版本. 压力测试工具:apache-jmeter-4.0 ...
- 【转】UIKit性能调优实战讲解
文/bestswifter(简书作者)原文链接:http://www.jianshu.com/p/619cf14640f3著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 在使用UIKi ...
- Spark&Spark性能调优实战
Spark特别适用于多次操作特定的数据,分mem-only和mem & disk.当中mem-only:效率高,但占用大量的内存,成本非常高;mem & disk:内存用完后,会自己主 ...
随机推荐
- 香茅油:不只是驱虫剂 new
如果您是芳香疗法的爱好者,香茅油对您来说可能并不陌生.香茅油还经常被添加到各种个人护理和清洁产品中,给人们带来多种益处. 什么是香茅油? 香茅精油是从香茅属 (Cymbopogon ) 植物家族中提取 ...
- shell 字符串比较 算数比较 文件条件测试
set-group-id即set-gid -->授予了程序其所在组的访问权限 set-user-id即set-uid -->授予了程序其拥有者的访问权限而不是其使用者的访问权限 set-g ...
- hibernate学习(初识)
hibernate是一个开源的对象关系映射框架(ORM).对JDBC进行了轻量级的封装.将对象和数据库表建立映射关系,hibernate框架使用在数据持久化层(DAO). ORM:对象关系映射(Obj ...
- web中spring框架启动流程第一发
web.xml中springmvc相关配置如下:<servlet> <servlet-name>springmvc</servlet-name> <servl ...
- Android Studio开发快速创建MVP框架插件AndroidMVP
转载:https://www.jianshu.com/p/60cd98bbc358 Android开发中,我们为了代码的解耦以及后期的维护方便,都会采用一些开发框架,常用的有MVC.MVP.MVVM. ...
- mysql中的concat,concat_ws(),group_concat()
mysql中的concat,concat_ws(),group_concat() 说明: 本文中使用的例子均在下面的数据库表tt2下执行: 一.concat()函数 1.功能:将多个字符串连接 ...
- mysql-5.7.25 源码 安装
mysql-5.7.25 源码 安装 编译 export INSTALL_PREFIX="/data/services" export MYSQL_INSTALL_PATH=&qu ...
- Ubuntu设置su和sudo为不需要密码 (摘录自别处)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/langb2014/article/details/54646675 针对非服务器用户,只是用普通的U ...
- 前端多选插件bootstrap-select的使用
一.分别引入bootstrap-select.min.js和bootstrap-select.min.css文件 二.在页面中写一个class为selectpicker的select控件 <se ...
- 自动化运维工具——ansile详解
自动化运维工具——ansible详解(一) 目录 ansible 简介 ansible 是什么? ansible 特点 ansible 架构图 ansible 任务执行 ansible 任务执行模式 ...