javaone_虚拟化Java应用程序:最佳实践(JavaOne 2011)
javaone
賈斯汀·穆雷(Justin Murray)早五分鐘就開始了他的演講[“虛擬化Java應(yīng)用程序:最佳實踐”(21860)],并說虛擬化已經(jīng)到了人們不再需要擔(dān)心利用虛擬化的地步。 他說他的演講大約有一年的歷史了,是一個團(tuán)隊的工作。相對較小的房間(Nikko Carmel I / II)擠滿了人,似乎只靠近站立的房間(坐席幫助每個人就座)。 早上的策略性主題演講稍有結(jié)束,人們在試圖離開時陷入了宴會廳,而本次演講的提早開始導(dǎo)致很多人遲到,這有些分散注意力。 我不怪演講者提早開始,因為他有很多很好的信息要講。 最大的問題是后勤延遲迫使人們離開已經(jīng)超過計劃的結(jié)束時間的主題演講。
Muray具有七個虛擬化最佳實踐,只有前兩個(虛擬機內(nèi)存和虛擬CPU /物理CPU /線程)是Java特有的。 大多數(shù)人在存儲區(qū)域而不是處理/ CPU區(qū)域犯了虛擬化錯誤。 Murray指出,Java開發(fā)人員無需執(zhí)行任何操作即可使用虛擬化。 他們不需要更改任何代碼,也不需要更改任何設(shè)置。
一個易于理解的虛擬化Java應(yīng)用程序的初始最佳實踐是:“ Java堆需要始終保持在物理內(nèi)存中。” 他還建議使用大內(nèi)存頁。 不要將那么多虛擬機塞入物理內(nèi)存,以免每個VM的總最大堆空間使用的內(nèi)存多于物理內(nèi)存中的可用內(nèi)存。
默里的第一個正式最佳實踐是“ 1。 虛擬機內(nèi)存:調(diào)整虛擬機的內(nèi)存大小以留出足夠的空間。” 他指出,有一個公式可以計算要使用的內(nèi)存量,以考慮該內(nèi)存的許多需求。 他說,此公式已記錄在白皮書和同事的書中。 Murray說,雖然對于一個小型應(yīng)用程序可能有太多的JVM內(nèi)存,但他通常傾向于為JVM分配大量的內(nèi)存以用于虛擬化。 Murray還建議使用VMware Distributed Resource Scheduler(DRS) 。 他的另一個廣告宣傳是針對Java的vFabric彈性內(nèi)存(EM4J),它與VMware的稱為“ tc服務(wù)器 ”的“ Tomcat之味”一起提供。 Murray表示,盡管在大多數(shù)情況下都擔(dān)心Java中內(nèi)存的過度使用,但在使用tc服務(wù)器和EM4J時卻不需要。 Murray還使用了esxtop 。
在解決了內(nèi)存問題之后,Murray轉(zhuǎn)向了覆蓋CPU。 他從對線程和虛擬CPU的觀察開始本節(jié)。 他的幻燈片中寫道:“ Java線程可隨時在一個vCPU上執(zhí)行”,而“ vCPU則可隨時在一個物理CPU上調(diào)度。” Murray補充說,他與之合作的大多數(shù)客戶正在使用四個虛擬CPU,但是現(xiàn)在最多支持32個虛擬CPU。線程通常在監(jiān)視器或套接字上等待釋放,并且Murray認(rèn)為大多數(shù)Java應(yīng)用程序并未完全使用theads。 通常,Murray傾向于使用“對于您的應(yīng)用程序而言最少的虛擬CPU”。 Murray表示,使用命令行選項-Xgcthreads等同于說:“我比JVM更了解。”
Murray表示,虛擬化不再害怕I / O。 他說,從Java虛擬化的角度來看,網(wǎng)絡(luò)I / O比磁盤I / O更重要。 Murray指出,交換對物理機上的VM不利,對于虛擬機上的VM同樣不利。
Murray提供的一個更好的建議應(yīng)該被更普遍地理解(但似乎不是),它只是對自己的應(yīng)用程序進(jìn)行基準(zhǔn)測試,并且僅基于特定應(yīng)用程序的基準(zhǔn)測試來做出決策。 他補充說,使用應(yīng)用程序的“代表性子集”還不夠好。
為了進(jìn)行監(jiān)視和管理,Murray建議從每臺計算機開始一個JVM進(jìn)程,然后逐步擴(kuò)展到虛擬機中所需的JVM數(shù)量,一次確定一個上限。 他在幻燈片上的最后一個項目符號建議使用vCenter或esxtop來查看Java應(yīng)用程序的哪些部分正在消耗資源。
Murray的“簡短故事”是,對于虛擬化而言,Java開發(fā)人員通常不需要調(diào)整JVM垃圾回收策略,線程池大小或JDBC連接池大小,而對于物理服務(wù)器則不需要進(jìn)行任何調(diào)整。 唯一應(yīng)使用的命令行選項是用于指定大頁面。
Murray討論了使用Capacity Planner進(jìn)行大約30天的收集,以了解哪些候選人是虛擬化的良好候選人。 Murray指出,您不能憑空創(chuàng)建硬件,因此在這種情況下,虛擬化將無法??幫助大量使用硬件。
Murray最后總結(jié)道:“ Java中間件和應(yīng)用程序應(yīng)該虛擬化。”
Murray在VMware工作,VMware 在VMware最佳實踐指南上提供了企業(yè)Java應(yīng)用程序 。 Murray在演講中引用了VMware的技術(shù)白皮書 。
參考: JavaOne 2011:虛擬化Java應(yīng)用程序: JCG合作伙伴的 最佳實踐 ? 實際事件啟發(fā)博客上的達(dá)斯汀·馬克思。
翻譯自: https://www.javacodegeeks.com/2012/02/virtualizing-your-java-applications.html
javaone
總結(jié)
以上是生活随笔為你收集整理的javaone_虚拟化Java应用程序:最佳实践(JavaOne 2011)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器的无线功能怎么检测如何测试路由器无
- 下一篇: fold函数_Java中使用Map an