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