摘要:銷售助手緩存優化實驗報告問題背景移動銷售助手又名外勤通,個別頁面訪問非常慢,急需優化。結論二對于簡單的,無須從優化為緩存。
銷售助手-緩存優化實驗報告
2015.4.7 by ouyida3
移動APP-銷售助手(又名外勤通),個別頁面訪問非常慢,急需優化。
實驗環境Oracle數據庫:測試環境32.121.2.132(性能還行,但發現偶爾會有問題)
后臺WEB應用:本機環境MyEclipse+Weblogic(本機暫時發現很好,完全沒有性能瓶頸)
前臺MAPP應用:測試環境30.51.23.250(該機器是svn服務器,性能不怎么樣)
手機APP應用:iphone5,ios8.2安裝(沒有性能瓶頸)
優化手段某些表使用Ehcache把數據通過Key-Value緩存,不用每次均從數據庫取數。
優化代碼:
詳見:/mapp/src/com/age/mapp/bean/MappTaskBean.java
修改前,每次均讀取oracle的方法:
javacomdao.getStaticValue 修改后,只第一次從oracle讀取,第二次以后從緩存讀取:CacheUtils.getStaticValue 代碼如下: // 優化效率,改為讀取緩存 author Ouyida3 2015.4.4 //taskmap.put("URGENT", comdao.getStaticValue(task.getString("URGENT"), "MAPP_EMERGENT_TYPE")); taskmap.put("URGENT", CacheUtils.getStaticValue(task.getString("URGENT"), "MAPP_EMERGENT_TYPE", pd));
為了測試使用時間,在前后均加上時間的打印代碼:
java// 增加時間差顯示,優化效率時使用 2015.4.4 Date beginDate = null; if (log.isDebugEnabled()) { beginDate = new java.util.Date(); } taskmap.put("URGENT", CacheUtils.getStaticValue(task.getString("URGENT"), "MAPP_EMERGENT_TYPE", pd)); // 增加時間差顯示,優化效率時使用 author OuyangDa 2015.4.4 if (log.isDebugEnabled()) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); Date endDate = new Date(); String beginTime = sdf.format(beginDate); String endTime = sdf.format(endDate); log.debug("請求和返回時間分別是:" + endTime + " , " + beginTime); }
修改前的時間占用
連續進行了5次測試。第一次和第三次分別占用了15和16毫秒,其余均占用0毫秒。證明即使連接oracle,也不是每次都占用毫秒級的時間,應該是oracle內部作了優化,把同樣的sql放到緩存池了,提高了命中率。
DEBUG(MappTaskBean) 請求和返回時間分別是:2015-04-07 14:46:12 039 , 2015-04-07 14:46:12 024
DEBUG(MappTaskBean) 請求和返回時間分別是:2015-04-07 14:46:35 539 , 2015-04-07 14:46:35 539
DEBUG(MappTaskBean) 請求和返回時間分別是:2015-04-07 14:46:59 149 , 2015-04-07 14:46:59 133
DEBUG(MappTaskBean) 請求和返回時間分別是:2015-04-07 14:47:47 117 , 2015-04-07 14:47:47 117
DEBUG(MappTaskBean) 請求和返回時間分別是:2015-04-07 14:48:11 117 , 2015-04-07 14:48:11 117
修改后的時間占用
第一次訪問,使用時間均為16毫秒。重啟了weblogic,再次試驗,第一次訪問還是為16毫秒。
DEBUG(MappTaskBean) 請求和返回時間分別是:2015-04-07 14:34:45 961 , 2015-04-07 14:34:45 945
第二次以后的訪問,使用時間均為0毫秒。說明此時的占用時間已經是微妙級以下。
DEBUG(MappTaskBean) 請求和返回時間分別是:2015-04-07 14:28:36 524 , 2015-04-07 14:28:36 524
DEBUG(MappTaskBean) 請求和返回時間分別是:2015-04-07 14:36:26 695 , 2015-04-07 14:36:26 695
實驗結論
結論一
第一次連接Oracle數據庫的時間:大約16毫秒
一模一樣的SQL,第二次以后連接Oracle數據庫的時間:大多數為0毫秒,偶然會占用大約16毫秒
從Ehcache取數時間:大約0毫秒
也就是說從Oracle取數與從Ehcache緩存里取數,相差的時間大約為16毫秒。
結論二
對于簡單的SQL,無須從Oracle優化為緩存。
因為簡單的SQL,只要每次都能在Oracle里命中,從Oracle里取數也能達到0毫秒的性能。
ouyida3的segmentfault的blog
2015.4.7
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61770.html
摘要:更好的安全性隨著的發布,從升級到了,更安全且更易配置。通過使用,程序可以減少握手所需時間來提升請求性能。提供診斷報告有一項實驗功能,根據用戶需求提供診斷報告,包括崩潰性能下降內存泄露使用高等等。前端精讀幫你篩選靠譜的內容。 1. 引言 Node12 發布有幾個月了,讓我們跟隨 Nodejs 12 一起看看 Node12 帶來了哪些改變。 2. 概述 Node12 與以往的版本不同,帶來...
摘要:巔峰人生年老兵思路上的轉變,遠比單純提升技術更有價值本文節選自趙成教授在極客時間開設的趙成的運維體系管理課,是其對自己十年技術生涯的回顧與總結。趙成教授來自美麗聯合集團,集團旗下兩大主力產品是蘑菇街和美麗說,目前負責管理集團的技術服務團隊。 showImg(https://segmentfault.com/img/remote/1460000012476504?w=1240&h=826...
摘要:啟動速度大幅提升。同時,通過重用主進程緩存,的啟動速度提升了。在已經引入的特性,在里面默認啟用,無需使用開啟。相關介紹診斷報告提供了新的實驗性功能診斷報告,一個非常有用的特性。升級為,增強安全功能。 前言 時隔一年,Node.js 12 如約而至,正式發布第一個 Current 版本。 該版本帶來了諸如: V8 更新帶來好多不錯的特性。 HTTP 解析速度提升。 啟動速度大幅提升。 更好的...
摘要:在實踐中,幾乎總是通過向梯度增加來實現算法,而不是真正改變損失函數。顯然這是兩種不同的方法。那么,權重衰減是不是總比的正則化更好呢我們還沒發現明顯更糟的情況,但無論是遷移學習問題例如斯坦福汽車數據集上的的微調還是 跌宕起伏的 Adam縱觀 Adam 優化器的發展歷程,就像過山車一樣。它于 2014 年在論文 Adam: A Method for Stochastic Optimization...
閱讀 2577·2021-11-25 09:43
閱讀 1848·2021-09-22 15:26
閱讀 3697·2019-08-30 15:56
閱讀 1702·2019-08-30 15:55
閱讀 1889·2019-08-30 15:54
閱讀 805·2019-08-30 15:52
閱讀 3135·2019-08-29 16:23
閱讀 886·2019-08-29 12:43