隨筆-16  評(píng)論-54  文章-0  trackbacks-0
          ???? 最近在負(fù)責(zé)一個(gè)大項(xiàng)目,項(xiàng)目組成員包括項(xiàng)目經(jīng)理大概10個(gè)人左右。項(xiàng)目技術(shù)用struts+spring+hibernate實(shí)現(xiàn)。項(xiàng)目的規(guī)模相對(duì)來說是比較大的,總共有10大模塊,每個(gè)大模塊又分為有十幾個(gè)、甚至幾十個(gè)小模塊。開發(fā)工具用eclipse,由于在開發(fā)階段,項(xiàng)目開發(fā)成員需要頻繁重啟服務(wù)器。在啟動(dòng)服務(wù)器的時(shí)候,每次啟動(dòng)時(shí)間總是會(huì)超過1分鐘。記得以前在做另外一個(gè)項(xiàng)目時(shí),啟動(dòng)時(shí)間不到5秒鐘,相差了10倍,而且項(xiàng)目規(guī)模是差不多的。

          ??? 從初步分析來說,應(yīng)該是hibernate解釋hbm.xml時(shí)花費(fèi)時(shí)間,或者可能是spring容器啟動(dòng)并解釋所有的bean配置文件。診斷了一下,發(fā)現(xiàn)1分鐘消耗的時(shí)間主要分布在hibernate解釋hbm.xml花費(fèi)5秒;spring容器從啟動(dòng)到解釋bean配置文件竟然花了58秒,真是太囂張了。當(dāng)時(shí)非常懷疑spring的效率問題。企圖從網(wǎng)上搜索相關(guān)資料,看看有什么優(yōu)化措施。

          ??? 首先是找到了hibernate的啟動(dòng)優(yōu)化 http://www.hibernate.org/194.html? 里面的主要思想是通過將xml序列花到本地的文件里,每次讀取的時(shí)候根據(jù)情況,從本地文件讀取并反序列化,節(jié)省了hibernate xml的解析時(shí)間。按照這個(gè)方式測(cè)試了一下,發(fā)現(xiàn)hibernate的啟動(dòng)時(shí)間從5秒降低到3秒,但是這個(gè)優(yōu)化對(duì)于整個(gè)啟動(dòng)過程是杯水車薪的,毫無用處。

          ??? 沒辦法,又仔細(xì)查看了spring的資料,終于發(fā)現(xiàn)spring的容器是提供了lazy-load的,即默認(rèn)的缺省設(shè)置是bean沒有l(wèi)azy-load,該屬性處于false狀態(tài),這樣導(dǎo)致spring在啟動(dòng)過程導(dǎo)致在啟動(dòng)時(shí)候,會(huì)默認(rèn)加載整個(gè)對(duì)象實(shí)例圖,從初始化ACTION配置、到service配置到dao配置、乃至到數(shù)據(jù)庫連接、事務(wù)等等。這么龐大的規(guī)模,難怪spring的啟動(dòng)時(shí)間要花將近1分鐘。嘗試了一下,把beans的default-lazy-init改為true就,再次啟動(dòng),速度從原來的55秒,降到8秒鐘!!Great!雖然是非常小一個(gè)改動(dòng),但是影響確實(shí)非常大。一個(gè)項(xiàng)目組10個(gè)人,假若每個(gè)人一天平均需要在eclipse下啟動(dòng)測(cè)試服務(wù)器50次。那么一天項(xiàng)目組需要重啟500次,每次節(jié)省50秒的話,就是25000秒,將近幾個(gè)小時(shí),差不多一個(gè)工作日,多么可觀的數(shù)字!

          ?? 不過在運(yùn)行期間第一次點(diǎn)頁面的時(shí)候,由于spring做了lazy-load,現(xiàn)在就需要啟動(dòng)一部分需要的beans,所以稍微慢2-3秒鐘,但是明顯比等幾十秒要快很多,值得一鑒。

          ??? 以上是針對(duì)開發(fā)階段的spring容器啟動(dòng)優(yōu)化,在部署到實(shí)際環(huán)境中,倒是沒必要設(shè)置為lazy-load。畢竟部署到實(shí)際環(huán)境中不是經(jīng)常的事,每次啟動(dòng)1分鐘倒不是大問題。
          posted on 2006-07-29 13:27 jspark 閱讀(3272) 評(píng)論(2)  編輯  收藏

          評(píng)論:
          # re: 開發(fā)階段eclipse下面的spring容器的啟動(dòng)優(yōu)化 2006-07-31 10:24 | zsw

          為什么上網(wǎng)時(shí)不順便賺錢呢?
          一邊上網(wǎng),一邊賺錢,無本萬利,趕快加入!
          http://www.15888.com/nbzsw3721   回復(fù)  更多評(píng)論
            
          # re: 開發(fā)階段eclipse下面的spring容器的啟動(dòng)優(yōu)化 2006-08-02 12:15 | cm4ever
          關(guān)于hibernate延遲加載,看我的實(shí)現(xiàn):
          Hibernate動(dòng)態(tài)模塊
          http://blog.csdn.net/cm4ever/archive/2006/06/14/795833.aspx  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 嵩明县| 华阴市| 陇西县| 启东市| 自治县| 乌兰察布市| 寿光市| 六枝特区| 洛南县| 若羌县| 壤塘县| 黄平县| 西昌市| 万盛区| 长顺县| 禹城市| 化德县| 甘谷县| 商水县| 寿阳县| 炉霍县| 兴化市| 瓮安县| 忻州市| 盐津县| 林西县| 阜康市| 普兰店市| 松潘县| 和硕县| 慈溪市| 阳西县| 油尖旺区| 金湖县| 灵宝市| 广汉市| 合作市| 陇西县| 靖州| 隆子县| 绵竹市|