2008年7月3日
摘要: 這本書就是之前blog上寫的《構建高性能的大型分布式Java應用》一書,書稿完成后,覺得本書更多的仍然是偏向講解分布式Java應用的基礎知識,以及我個人工作經驗的一些分享,于是改名成了《分布式Java應用:基礎與實踐》,本書目前已送往印刷廠印刷,下面是目前的一些關于本書的信息:
1、封面和目錄
http://bluedavy.com/?p=55
2、序
http://bluedavy.com/?p=60
3、豆瓣上書的信息
http://book.douban.com/subject/4848587/
閱讀全文
摘要: 本PPT只介紹了在Sun Hotspot V 1.6.0中:
1、內存結構;
2、內存分代,如何控制代大小;
3、可用的GC,每種GC對于參數的不同使用,例如SurvivorRatio、MaxTenuringThreshold等;每種GC不同的內存分配策略和回收策略,但不涉及具體算法是如何實現的;
4、GC是怎么觸發的,日志是什么含義;
5、怎么使用上面的GC;
6、GC Tuning,簡單介紹了一些常見的GC調優的目標時的瓶頸、可采用的方法等。
閱讀全文
摘要: 網絡訪問時,通常要做超時控制,要實現的好其實還是有些挑戰的,歡迎大家圍觀code show,并提供你的改進代碼,:):http://bluedavy.com/?p=39
閱讀全文
摘要: 本次交流在4月24日圓滿完成,主題為關于JVM的那些事,撒迦@rednaxelafx給大家做了一個長達四小時的精彩分享,涵蓋了javac、解釋執行、c1、c2編譯執行方面的知識點。
由于視頻太大,感興趣的同學請從以下地址下載,自行觀看,:),也歡迎看完后在twitter上,或在這里來進行討論,blog遷移到了bluedavy.com,地址在此:http://bluedavy.com/?p=36
閱讀全文
摘要: 摘自我那本6月份要上市的,但目前名字還沒完全確定的書,由于書中涵蓋的更多的為構建高性能分布式Java應用所需要的基礎知識,也許改成了《通往高性能分布式Java應用之路》,主要是闡述下為什么大型應用需要SOA,以及eBay的例子,blog全文請見:http://bluedavy.com/?p=30
閱讀全文
摘要: blog已轉移至bluedavy.com,感興趣的同學可以移步至此:http://bluedavy.com/?p=27
閱讀全文
摘要: 3月30日Twitter在其engineering blog上寫了一篇Unicorn Power的blog:http://engineering.twitter.com/2010/03/unicorn-power.html,寫的挺經典的,按我的理解來講下這篇blog吧,如有錯誤,請幫忙糾正,:),blog已遷移至bluedavy.com,感興趣的同學可以訪問這個地址來查看全文:http://bluedavy.com/?p=25
閱讀全文
摘要: 由于blog開始轉移到bluedavy.com,感興趣的同學可到此圍觀:http://bluedavy.com/?p=23,本篇blog從看一個超市發展的過程中,收銀碰到的問題以及解決方案來闡述互聯網的技術。
閱讀全文
摘要: blog開始轉移到www.bluedavy.com,因此感興趣的同學請訪問http://bluedavy.com/?p=18
閱讀全文
摘要: 由阿里云龍浩同學牽頭的杭州程序員圓桌交流,第一期主題為并發編程,把自己的經驗也分享下,在活動結束后會公開此次交流的資料,具體PPT請見文中。
閱讀全文
摘要: 在QCon SF 2009的SOA分會場上,eBay的架構師講了一個SOA @ eBay的PPT,正好和我的工作有很多的交叉點,于是比較認真的看了下這個PPT,感興趣的同學可以從這里下載:http://qconsf.com/sf2009/file?path=/qcon-sanfran-2009/slides/SastryMalladi_SOAEBayHowIsItAHit.pdf,在這個PPT中可以看到eBay對于SOA的看法以及他們目前的做法,自己也是做這方面工作的,就在這篇blog中介紹下這個PPT以及自己對于SOA的一些看法。
閱讀全文
摘要: 本篇blog將講述coroutine的一些背景知識,以及在Java中如何使用Coroutine,包括一個簡單的benchmark對比,希望能借助這篇blog讓大家了解到更多在java中使用coroutine的方法,本篇blog的PDF版本可從此下載:http://www.bluedavy.com/open/UseCoroutineInJava.pdf
閱讀全文
摘要: 公歷的2009已經過去,2010來臨,不免俗的也對自己個人2009做一次回顧,同時對自己的2010做一次展望,希望自己的2010能過的更加精彩。
閱讀全文
摘要: In product env,we always need to monitor gc trend or tunning gc based on gc trend,before sun jdk 1.6+,we can use GCViewer to visualize gc log to see gc trend,but it not support jdk 1.6+,so I write a free open source tool to visualize gc log produced by sun jdk 1.6+,now V 0.2 release,If you need,pls download from http://code.google.com/p/gclogviewer/.
閱讀全文
摘要: In this blog,I'll test the coroutine supported on jvm,now famous is scala actor & kilim,this blog show the program reliazed with scala actor/kilim/java,let's compare these three program performance.
閱讀全文
摘要: 在HPTS大會上,Randy Shoup放出的eBay的PPT有所改變,在原有的5個Architectural Lessons上又增加了5個lesson,從這也可以一定程度的看出當訪問量、數據量、功能不斷上漲后,碰到的技術問題也將繼續發展,想必這也是eBay增加5個lessons的原因,eBay在技術方面的發展對很多互聯網公司都有一些參考意義,畢竟它已經經歷過了國內很多網站目前的階段甚至是幾年后的階段,在本篇blog中就完整的來看看eBay的這10個lessons、eBay的應對策略以及我個人的一些推測。
閱讀全文
摘要: 本書預計共八章,目前完成五章,由于本書需要涵蓋Java分布式應用、高性能java應用、可伸縮的java應用以及高可用java應用四方面的知識點,編寫的難度不小,因此在此先行放出目錄和樣章,希望能夠得到大家的一些反饋,以保證本書的質量,目錄&樣章下載地址為:http://www.bluedavy.com/opendoc/bookpreview.pdf
閱讀全文
摘要: 非常強烈的推薦下BTrace這個工具,用了后不得不說太強大了,BTrace簡單來說,就是能在不改動當前程序的情況下,運行時的去監控Java程序的執行狀況,例如可以做到內存狀況的監控、方法調用的監控等等,官方網站上有非常多詳細的例子,我不說太多,只在下面舉一個簡單的例子來說明它的作用,BTrace的User Guide請見:http://kenai.com/projects/btrace/pages/UserGuide。
閱讀全文
摘要: 摘自《構建高性能的大型分布式Java應用》第六章,感興趣的同學們可以看看。
GC策略在G1還沒成熟的情況下,目前主要有串行、并行和并發三種,對于大內存的應用而言,串行的性能太低,因此使用到的主要是并行和并發兩種,具體這兩種GC的策略在深入JVM章節中已講解, 并行和并發GC的策略通過-XX:+UseParallelGC和-XX:+UseConcMarkSweepGC來指定,還有一些細節的配置參數用來配置策略的執行方式,例如:-XX:ParallelGCThreads、-XX:CMSInitiatingOccupancyFraction等,新生代對象回收只可選擇并行,在此就舉例來看看兩種GC策略在Full GC時的具體表現狀況。
閱讀全文
摘要: 和清華學子做了一次關于OSGi的交流,在此公開下這個PPT,:),這個PPT是我寫的最長的一個OSGi PPT,涵蓋的內容主要是OSGi標準方面的知識以及Equinox使用的一些知識,感興趣的同學可以下載下: http://www.bluedavy.com/opentopic/OSGi20094qh.pptx
閱讀全文
摘要: 架構師接龍是《程序員》雜志最近推出的一個活動,活動方式為:每期一個提問嘉賓,一個回答嘉賓,并由回答嘉賓提出新的問題給下期的架構師,形成接龍,之前第一期是支付寶的馮大輝提問,騰訊的研發總監王速瑜回答,我參與的是第二期,這期會登在《程序員》0909期上,內容轉帖如下,原帖為程序員官方上的:http://www.programmer.com.cn/727/,呵呵,都只是個人的片面理解做出的回答,也歡迎大家在此帖中繼續討論,:)
閱讀全文
摘要: 這篇文章中總結了一些構建可伸縮性系統的最佳實踐,總結的不錯,于是翻譯了下,原文在此:http://akfpartners.com/techblog/2009/08/11/scalability-best-practices/,翻譯內容如下。
閱讀全文
摘要: 在將Hessian從3.0.13升級到3.2.0時碰到兩個bug和一個ClassLoader處理策略的改變的問題,在此記錄下,希望能為使用Hessian 3.2.0的同學們提供點幫助,避免再走同樣的彎路。
閱讀全文
摘要: 幾年以來,eBay在幾個不同的大會上先后分享過幾次關于eBay技術的PPT,在這篇blog中,就以這些PPT來以旁觀者的角度分析下eBay的技術發展歷程,不論eBay現在的業績如何,不可否認,他們的技術還是挺強的,因此還是值得學習,eBay的整個技術發展歷程從一定程度上來說可以認為是互聯網公司的典型技術發展歷程,基本上各家互聯網公司都在走著類似的路線,只是各家選擇的語言不同、具體的實現方案不同、細節不同,當然,思路是一方面,實現又是另外一方面,只有兩者結合才能實現一個高可用、高性能和高并發的有海量數據的系統。
閱讀全文
摘要: 這本書的名號有:國內第一本OSGi中文書,全球第二本OSGi技術書,少數的能夠領先于英文技術原創書出版的中文書籍,這些都乃虛名,最重要的是希望這本書能真正的為希望了解、學習或深入掌握OSGi;希望了解、學習如何編寫模塊化、動態化的Java應用的Java技術人員提供一些幫助,那么也就不枉這本書的出版了,很榮幸能參與這本書的編寫,圓了自己兩年前出一本OSGi書的夢,下面放上一些本書的封面的圖片show下。
閱讀全文
摘要: Equinox的設計非常經典,其在擴展方面提供了很多的支持,同樣包括類加載方面的控制,除了通過標準的org.osgi.framework.bootdelegation以及equinox提供的osgi.parentClassLoader這兩個屬性來簡單的控制類加載之外,還可通過實現ClassLoaderDelegateHook來更為靈活的控制類加載。
閱讀全文
摘要: 很不容易,經過兩個多月兩個人的努力,終于完成了《OSGi原理與最佳實踐》一書的草稿,目前正在review過程,預計將在7月底上市,而由于國外的那本《OSGi in action》將出版時間推遲到11月了,《OSGi原理與最佳實踐》這本書也將成為全球第二本OSGi的書籍(很遺憾,德國之前出版了第一本),:),現將本書的目錄公布如下,上市的書也許會稍有改動,但應該會大體一致。
閱讀全文
摘要: 這是Lifecycle Layer中的最大改進,在之前的規范中只是簡單的描述了下框架的啟動和關閉,在制定了這個規范后,以后無論是啟動equinox還是felix,都可采用同樣的方式啟動,詳細的來看看,本文摘自《OSGi原理與最佳實踐》。
閱讀全文
摘要: 本文內容同樣摘自《OSGi原理與最佳實踐》,在之前的blog中也摘選了部分內容分析了Equinox的動態化,在這里再試驗下Felix的動態化,關注點為:“即插即用”、“熱部署”、“即刪即無”,看下Felix在這幾方面的表現和Equinox有什么不同。
閱讀全文
摘要: 對于采用OSGi來做系統的人而言,ClassLoader的問題必然是頭號需要解決的問題,如果又是個需要遠程通訊的OSGi應用的話,那么反序列化的classloader問題幾乎可以肯定是會碰到的,來看看在如今流行的兩種序列化、反序列化協議:java/hessian中如何使用自定義的classloader。
java/hessian并不提供直接的傳入ClassLoader類來改變反序列化時采用的ClassLoader,hessian采用的為使用當前線程的上下文ClassLoader來加載反序列化的類,java則采用堆棧上最近的一個ClassLoader類來加載,可以認為就是調用類所在的ClassLoader來加載,但在OSGi應用中,通常采用以上默認的行為來反序列化加載類是會出問題的,因此需要采用自定義的。
閱讀全文
摘要: 對于想使用Equinox來構建OSGi應用的同學們而言,掌握Equinox是如何加載Bundle中的Class無疑是相當重要的,這樣在碰到各類ClassNotFoundException的時候也就有底了,否則可能出現的ClassNotFoundException會多的讓你非常的頭疼,本文提取自《OSGi原理與最佳實踐》,介紹下equinox是如何來加載Bundle中的class的。
閱讀全文
摘要: OSGi最吸引人的特性除了模塊化之外,就是動態化了,在我之前寫的OSGi實戰以及進階兩篇Opendoc中,都有相關的示例,但不知道大家有沒有注意,在兩篇Opendoc中都未提及到bundle本身的更新,而基本都是以新增服務實現的bundle以及停止服務時限的bundle為例,并且相對而言是個比較簡單的例子,動態化在java界更明確的詞也許是hot deployment,而hot deployment的實現并不容易,同樣,即使你采用OSGi,但也不代表你的應用就具備了hot deployment的能力,在hot deployment上,完美的結果就是當更新完成后,新的執行請求就在新的代碼邏輯上正確的執行,就像沒發生過更新這回事樣,但實際要做到這樣的效果,遠沒這么容易,即使是基于OSGi也同樣如此,No magic & no silver bullet,在本篇blog中我們就來具體的看看。
閱讀全文
摘要: 在這篇blog中放置了我收集的一些網站架構相關的PPT和文章,提供給大家下載,如果大家有相關的好的PPT、文章的話,也歡迎推薦給我,非常感謝,:),這篇blog的內容也會隨著我收集的東西增加而變化,同時也會增加我對于這些PPT、文章的看法和評價。
閱讀全文
摘要: 把自己寫的兩篇opendoc和Book統一放入此blog中提供下載,避免占據我blog的兩個置頂位,:)
閱讀全文
摘要: 在使用OSGi時,有些時候會需要在OSGi容器外獲取OSGi服務,加載OSGi容器加載的class,或者說需要內嵌OSGi容器,本篇blog以一個簡單的例子來說明如何基于equinox實現OSGi容器的內嵌,或者說通過程序來啟動equinox,同時也通過此例子展示下如何在容器外來獲取OSGi服務以及加載OSGi容器里面其他插件的class,同時還會附送一個如何讓OSGi容器里的插件能加載到OSGi容器外的類的方法。
閱讀全文
摘要: 此次QCon北京大會為期三天,總體而言,精彩紛呈,尤其是第二天,完全將大會的精彩推至了高潮,讓大家覺得值回票價,總結而言,這次大會是相當成功的,一次成功的大會不能缺少的有兩個要素:知名的嘉賓和精彩的Topic,無疑QCon北京大會很好的把握了這兩個要素。
知名的嘉賓,此次大會出現的嘉賓絕對足夠重量級,看看Title就嚇人了:Spring老大、ThoughtWorks首席科學家、Dojo creator、eBay搜索核心架構師、Amazon云計算戰略師、淘寶首席架構師、支付寶首席架構師、豆瓣技術總監、優酷首席架構師、網易有道技術總監等等。
精彩的Topic,不是說嘉賓知名Topic就一定精彩的,不能不說,這次大會還是有些爆冷門的,嘉賓不是很知名,但演講的Topic確實還不錯,而且也不是說知名的嘉賓就一定能給出精彩的Topic,就像Martin Fowler這次的Topic,實在稱不上精彩,總體而言,這次大會并不缺少精彩的Topic,來分享下我的收獲。
閱讀全文
摘要: JVM是Java程序的運行環境,因此對于JVM的掌握有助于理解Java程序的執行以及編寫,尤其是運行時碰到的一些詭異問題,那么怎么樣能考察自己對于JVM關鍵知識點的掌握情況,幫助學習JVM機制呢,在這篇blog中來探討下。
閱讀全文
摘要: 在產品中有碰到過使用LinkedBlockingQueue.poll時超時很不準的現象,關鍵是這不是一般的不準,如果只是一點點不準的話也就勉強接受了,例如指定poll的超時時間為100ms,但最終執行.poll這段代碼就花費了8000ms的現象,這篇blog就是展示下通過一段小小的代碼來重現這樣的現象,畢竟沒有重現是無法證明為什么會出現這樣的現象的。
閱讀全文
摘要: 本文摘自《構建高性能的大型分布式Java應用》一書,Garbage First簡稱G1,它的目標是要做到盡量減少GC所導致的應用暫停的時間,讓應用達到準實時的效果,同時保持JVM堆空間的利用率,將作為CMS的替代者在JDK 7中閃亮登場,其最大的特色在于允許指定在某個時間段內GC所導致的應用暫停的時間最大為多少,例如在100秒內最多允許GC導致的應用暫停時間為1秒,這個特性對于準實時響應的系統而言非常的吸引人,這樣就再也不用擔心系統突然會暫停個兩三秒了。
閱讀全文
摘要: 記得自己在沒有進入互聯網行業之前,對于互聯網行業并不怎么感冒,總覺得互聯網行業的技術含量不高,沒什么意思,值得進入互聯網行業了,才明白,原來互聯網行業的技術是這么的復雜,這么的困難,而構建一個擁有巨大用戶量的系統無疑也會給自己帶來更多的成就感,記得自己剛進入互聯網行業的時候,才發現構建一個高并發、高性能、承受高壓力、高度可伸縮以及高可用性的系統要掌握的知識體系是在太多了,而且這些知識體系根本就不是在學校或是google、網絡中能夠學習到的,于是當時就想,如果能有一本書全面的介紹構建這”五高“特性的系統需要掌握的知識體系,那將是多么的美好呀,畢竟很多的知識體系都是靠經驗積累出來的,甚至可是說,是痛苦的教訓等得出來的,但當然,要在一本書中完全講清楚所有的知識體系,自然是不靠譜的,但我想我會盡量在書中表達出自己的一些觀點、看法以及少少的經驗吧,希望能夠讓更多的同學即使沒有大型系統的實際經驗,也能掌握到一些大型系統所需的知識體系,那么我心甚慰了,由于本書需要寫的東西非常的多,預計在9月底完成寫作,估計要到明年春節后上市,:),以下先揭秘下本書的大概內容,也請大家多多提出意見。
閱讀全文
摘要: 之前的Opendoc中沒有涉及過此部分的內容,maven又是現在非常流行的java的工具,再加上到目前為止搭建OSGi Maven開發和部署的環境還是比較的麻煩,覺得有必要寫篇這樣的blog,:),在這篇blog中來看下如何搭建一個比較好用的OSGi Maven開發和部署環境,看看我在搭建一個這樣的環境中的痛苦歷程。
閱讀全文
摘要: 記得Martin大叔在《企業應用架構模式》中特別強調:“能夠不分布式的應用就不要分布式”,這句話沒什么問題,尤其對于做過分布式應用的人而言,就更會有深刻的體會了,但這個世界偏偏就沒有那么簡單,大多數人都會碰到分布式應用的場景,尤其是對于大型應用而言,從集中式步入分布式是不可避免的,只是也許是小型分布式的,也許是大型分布式的;也許是有高性能要求的,也許是沒有的,在這篇blog中我們來看看java應用從集中式步入分布式后到底會帶來些什么挑戰。
閱讀全文
摘要: XSS漏洞是網站漏洞中最容易出現的一種,至少現在的各大網站中基本都存在,傳聞只有gmail是唯一一個完全不存在的,或者說攻擊者沒找出漏洞的,也許是因為XSS漏洞看起來危害并不是那么的大吧,所以基本上沒有得到過太大的重視,從而也就造成了這么多的網站存在著一些很簡單就能發現的XSS漏洞,在這篇blog中以我這個網站安全的外行人的角度來侃侃XSS漏洞攻擊以及防范的措施。
閱讀全文
摘要: 近來連續調試了好幾天的代碼,樂趣無窮,:),在純凈的人和機器對話的時間中,充分的和機器不斷的交流,最終共同實現功能,和同事說:“我喜愛調試代碼勝過了寫代碼”,怎么說呢,我覺得調試代碼能夠充分讓你將所掌握的知識發揮出來,考察自己解決問題的能力以及學習知識的能力,在這篇blog中來閑聊下調試代碼。
閱讀全文
摘要: 近期參與了幾個大學的校園招聘,總體下來感覺還行,由于校園招聘需要面的人很多,差不多面試流程都形成模式了,在面試的過程中,有不少學生問過我,到底面試的標準是什么,不過每個面試官的標準都是不同的,所以也就注定了面試是會有些不公平的,是否對面試官的胃口會起到很大的決定性因素,當然,最重要的還是實力,很多學生會認為面試不公平,但我覺得這也算是從學校進入社會的第一課吧,工作后學生們會發現更多不公平的事,對于學生而言,無論是應屆畢業的本科、碩士,我的面試標準都差不多,考察的為Java基礎、Java框架、設計模式、互聯網架構的了解,當然,在最后會問一些其他的問題,例如大學學習情況呀、一兩年后對自己的期望呀、優勢和不足、最近看過的技術新聞等等,在這些所有的問題的背后,考察的最重要的是基礎掌握的是否扎實、學習能力、反應速度、抗壓能力以及技術興趣。
閱讀全文
摘要: 在面試中,經常要評估面試者的java基礎知識和其他知識的掌握情況,包括public/private/protected/默認修飾符、static/final修飾符、集合、字符串操作、對象比較、異常、設計模式和面試者經常使用的框架等,整理一下自己經常使用的評估方法,:),拋磚中,希望能看到一些好的建議,讓大家更好的學習java知識,同時也更好的判斷人才,挖出真正的“金子”。
閱讀全文
摘要: 隨著OSGi近兩年的迅猛發展,尤其是Java企業應用領域廠商對OSGi的認同,大家對于OSGi的新版規范的關注遠遠超過了之前的幾個版本,近來OSGi終于是放出了傳聞已久的R 4.2的Early Draft,其實從Early Draft來看,我覺得完全可以認為不僅僅是一個小版本的升級了,甚至可以認為是R5了,因為R 4.2增強的東西還是非常多的,其中就包括了大家期待已久的RFC119,不過沒看到傳說中的RFC66,有一丁點的失望,不過相信后面的Draft中應該會加上,:),這樣看來,R5更是值得期待了,讓我們先來一起品嘗一下4.2 Early Draft這道大餐。
閱讀全文
摘要: 之前也有一些介紹大型網站架構演變的文章,例如LiveJournal的、ebay的,都是非常值得參考的,不過感覺他們講的更多的是每次演變的結果,而沒有很詳細的講為什么需要做這樣的演變,再加上近來感覺有不少同學都很難明白為什么一個網站需要那么復雜的技術,于是有了寫這篇文章的想法,在這篇文章中 將闡述一個普通的網站發展成大型網站過程中的一種較為典型的架構演變歷程和所需掌握的知識體系,希望能給想從事互聯網行業的同學一點初步的概念,:),文中的不對之處也請各位多給點建議,讓本文真正起到拋磚引玉的效果。
閱讀全文
摘要: 應該是差不多兩個月前收到了這本書,一直到最近才抽出時間來看了下,這本書的開篇的第一題現在基本已經成了經典中的經典了,相信很多人都因為這個控制 CPU使用率的題從而買了這本書的,在我自己看過這本書后我同時相信買了這本書的人應該會覺得非常的值得,要寫出合理實現需求、高性能以及大數據量的程序,數據結構和算法就成為關鍵要素了,這本書用簡短的題目給大家回顧了一些經典的算法。
閱讀全文
摘要: 不是專職做壓力測試這行當的,只能是以自己的經驗來以外行人的眼光來說說壓力測試,壓力測試并不僅僅是個壓力測試的過程,而是一個相當系統的工程,我認為壓力測試是為了讓系統達到所期望的運行效果以及承受所期望的壓力,這也就要求壓力測試應該幫助性能調優團隊,為其提供一定程度的指導,在這里我不將壓力測試和性能調優分的那么清楚了,在我看來,壓力測試過程包括了:明確壓力測試的目標、構建壓力測試案例、進行壓力測試、分析壓力測試結果、尋找瓶頸并進行調優以達到目標,在這篇blog中來細看下這幾個過程以及常用的方法。
閱讀全文
摘要: 這篇文章的第二部分在昨天也發布出來了,于是抓緊時間把它給翻譯了。在這篇文章的第一部分中,作者結合自己的經驗對如何構建具備良好的垂直擴展能力的Java EE應用做了講解,在這第二部分的文章中,作者則對如何構建具備良好水平擴展能力的Java EE應用來進行了詳細的講述,常見的session復制問題,水平擴展中經常需要涉及的分布式文件系統、分布式緩存、分布式并行計算,全文讀下來,作者基本指出了構建可擴展的Java EE應用需要了解的知識體系(如需深入的話還有必要進一步的學習,例如集群技術、通訊協議、線程、并發等)和平時實踐中的一些注意事項,應該說是篇十分難得的好文章,值得推薦。
閱讀全文
摘要: 這是一篇從TheServerSide上翻譯過來的文章,很自豪這篇這么好的文章是一個中國人(從作者名字上猜想應該是中國人吧,:))寫的,原文地址為:http://www.theserverside.com/tt/articles/article.tss?l=ScalingYourJavaEEApplications,可以說,這篇文章寫的是非常的不錯的,這是文章的第一部分,探討了如何構建可垂直擴展的Java EE應用,文中談論到的讓所編寫的Java EE應用具備垂直擴展能力的幾個關鍵要素,例如熱鎖問題、盡可能的縮短同步塊、不要在static方法上加鎖、多使用Atomic包、jvm內存不能設置的太大等,文中除了列了這幾個關鍵要素外,還詳細的解釋了為什么不能做以及如何避免出現這樣的現象,可以很明顯的看出作者在這些方面是具備了非常豐富的經驗的,因此這篇文章不僅僅講述了可擴展性理論方面的知識,同時也很好的從實戰角度進行了分析,之后我也會結合這篇文章來說說自己曾經碰到的垂直擴展場景的反例,同時也很期待這篇文章的第二部分,第二部分將探討如何構建可水平擴展的Java EE應用,翻譯的不好的地方還請大家多
閱讀全文
摘要: 之前寫了個簡單的jsp做壓力測試,沒想到出現的一個問題是當壓力比較大的情況,運行比較久的話會出現一個現象,就是jvm的內存幾乎被耗盡,用 jprofiler查看會發現是有一個ConcurrentHashMap對象的內存一直在增長,而且沒有釋放的跡象,隨后進入Debug模式,跟蹤查找都有誰new了ConcurrentHashMap,因為測試場景中是個非常簡單的jsp頁面,發現只有jsp的Request session會創建這個ConcurrentHashMap,很久沒寫jsp了,猜測是request session的默認超時時間太長,所以導致高壓力下(200并發,總共連續訪問50萬次,jvm內存1G)會出現內存一直沒有回收的問題,后來打印了一下request session的默認超時(AS是jboss 4.2.2),是半小時,如果這樣的話確實是會有造成上面內存一直被占用的現象。
閱讀全文