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/2146465git