Hawtio和Jolokia的休眠统计
企業(yè)Java的很大一部分處理數(shù)據(jù)。 在企業(yè)設(shè)置中使用數(shù)據(jù)的所有不同方式中,仍然存在使用任何種類(lèi)的O / R映射的行之有效且廣泛教授的方法。 JPA標(biāo)準(zhǔn)使每個(gè)人都可以輕松使用它,并且它也應(yīng)該是可移植的。 但是,我們不要談?wù)撨w移細(xì)節(jié)。 O / R映射的最大缺點(diǎn)是,開(kāi)發(fā)人員往往會(huì)失去與數(shù)據(jù)庫(kù)上發(fā)生的事情的聯(lián)系,甚至無(wú)法與數(shù)據(jù)庫(kù)發(fā)出確切的SQL語(yǔ)句。 這是這些項(xiàng)目遇到性能問(wèn)題的第一原因。 如果您在那里,則需要分析根本原因并深入分析問(wèn)題。 我最近發(fā)現(xiàn)了Hibernate的一個(gè)不錯(cuò)的功能,它使這一工作變得相當(dāng)容易。
可用的統(tǒng)計(jì)信息和獲取方法。
Hibernate最多提供3.5.x版本的統(tǒng)計(jì)信息和指標(biāo)API,可讓您了解幕后發(fā)生的事情。 在統(tǒng)計(jì)信息接口API中 ,將所有可用的計(jì)數(shù)器分為三類(lèi):
- 與常規(guī)會(huì)話(huà)使用率有關(guān)的度量標(biāo)準(zhǔn),例如打開(kāi)的會(huì)話(huà)數(shù),檢索到的JDBC連接等。
- 與實(shí)體,集合,查詢(xún)和緩存整體相關(guān)的指標(biāo)(也稱(chēng)為全局指標(biāo))。
- 與特定實(shí)體,集合,查詢(xún)或緩存區(qū)域相關(guān)的詳細(xì)指標(biāo)。
例如,您可以檢查實(shí)體,集合和查詢(xún)的高速緩存命中率,未命中率和放置率,以及查詢(xún)所需的平均時(shí)間。 請(qǐng)注意,在Java中,毫秒數(shù)是近似值。 Hibernate與JVM精度有關(guān),在某些平臺(tái)上,這可能僅精確到10秒。
簡(jiǎn)單的獲取器用于訪問(wèn)全局度量(即不綁定到特定實(shí)體,集合,緩存區(qū)域等)。 您可以通過(guò)名稱(chēng),通過(guò)其HQL或SQL表示來(lái)訪問(wèn)特定實(shí)體,集合或緩存區(qū)域的度量。 有關(guān)更多信息,請(qǐng)參考Statistics, EntityStatistics , CollectionStatistics , SecondLevelCacheStatistics和QueryStatistics API Javadoc。
您要做的就是為您感興趣的會(huì)話(huà)工廠啟用統(tǒng)計(jì)信息,并檢索統(tǒng)計(jì)信息以對(duì)其進(jìn)行分析。 那里有很多示例如何在Spring中使用此功能。 原因很簡(jiǎn)單:Spring附帶了一個(gè)傳奇的MBeanExporter,它將JMX MBeans公開(kāi)為Java對(duì)象。 并猜測(cè)一下:Hibernate Statistics提供了一種通過(guò)JMX公開(kāi)它們的簡(jiǎn)便方法。 但是,如果您僅組合使用更多RedHat魔術(shù),則無(wú)需使用Spring!
基本上,您可以通過(guò)兩種不同的方式在配置的設(shè)置中啟用統(tǒng)計(jì)信息。 最簡(jiǎn)單的方法是向持久性單元配置中添加屬性:
<property name="hibernate.generate_statistics" value="true"/>但是也可以手動(dòng)啟用它們。 有關(guān)如何執(zhí)行此操作的更多詳細(xì)信息,請(qǐng)參見(jiàn)社區(qū)Wiki和Hibernate文檔中的性能監(jiān)視部分。
通過(guò)示例啟用和公開(kāi)統(tǒng)計(jì)信息
我創(chuàng)建了一個(gè)小示例獨(dú)立的Hibernate應(yīng)用程序示例,其中包含兩個(gè)實(shí)體和一個(gè)主類(lèi),該主類(lèi)正在使用hibernate并初始化您需要了解的所有內(nèi)容。 通過(guò)在GitHub上進(jìn)行分叉,立即獲得它 。 這是一些簡(jiǎn)單的演練:
有兩個(gè)強(qiáng)制性實(shí)體(部門(mén)和雇員)和META-INF / persistence.xml。 這是基本設(shè)置。 這里沒(méi)有太多魔術(shù)。 您可以在persistence.xml中查看在何處啟用統(tǒng)計(jì)信息(可能)。 該示例在主類(lèi)JpaTest中啟用它們。 但是,讓我們從頭開(kāi)始。 main方法按順序執(zhí)行以下步驟:
魔術(shù)始于第二個(gè)步驟,該步驟位于registerHibernateMBeans(EntityManager manager)方法中。 它動(dòng)手了PlatformMBeanServer,注冊(cè)了相關(guān)的Hibernate JMX Mbean,設(shè)置了我們感興趣的Session Factory并啟用了統(tǒng)計(jì)信息。 那很簡(jiǎn)單。 現(xiàn)在,您已經(jīng)注冊(cè)了屬性“ statistics”的JMX MBean“ Hibernate”。 如果您可以通過(guò)JConsole或Mission Control或VisualVM訪問(wèn)服務(wù)器,則可以簡(jiǎn)單地連接到該進(jìn)程并瀏覽統(tǒng)計(jì)信息:
JConsole中的Hibernate MBean
在生產(chǎn)環(huán)境中,這通常是根本不可能的。 因此,您需要找到一種通過(guò)http / https進(jìn)行訪問(wèn)的方法。 在這里,我發(fā)現(xiàn)可以方便地將Hawtio用作用于管理Java東西的模塊化Web控制臺(tái)。 簡(jiǎn)而言之,這是一個(gè)帶有插件的網(wǎng)絡(luò)控制臺(tái)。 它有大量的插件 ,可以自定義和擴(kuò)展以滿(mǎn)足您的需求。 今天,我們正在看一個(gè)非常簡(jiǎn)單的插件JMX plugin 。 它為您提供了基礎(chǔ)JMX度量標(biāo)準(zhǔn)數(shù)據(jù)的原始視圖,從而允許訪問(wèn)MBean的整個(gè)JMX域樹(shù)。 但是,為了實(shí)現(xiàn)這一點(diǎn),我們首先需要找到一種將JMX功能公開(kāi)給Hawtio的方法。 這是Jolokia出現(xiàn)的地方。其中有一個(gè)JVM代理 ,可以通過(guò)JSON公開(kāi)JMX MBean。 您所需要做的就是像這樣初始化并啟動(dòng)服務(wù)器:
現(xiàn)在您可以嘗試使用Hawtio控制臺(tái)了。 查看快速入門(mén) ,看看有什么可能。 對(duì)于本示例,我僅使用Google Chrome擴(kuò)展程序,您只需下載并拖動(dòng)到Chrome中的擴(kuò)展程序頁(yè)面即可。 看起來(lái)像:
Chrome中的Hawtio擴(kuò)展
如果您配置“ localhost”,“ 8778”和路徑“ jolokia”,那么您都將開(kāi)始瀏覽結(jié)果。 單擊“連接”后,您可以瀏覽儀表板或切換到JMX視圖并導(dǎo)航到Hibernate MBean:
使用Hawtio瀏覽JMX MBean
來(lái)自DevNation 2014的Stan Lewis對(duì)Hawtio進(jìn)行了更全面的介紹,等待您觀看:
這是一個(gè)簡(jiǎn)短的例子。 繼續(xù)閱讀GitHub源代碼,并隨意研究Hawtio:
- 閱讀入門(mén)指南,以了解如何在您自己的環(huán)境中下載和安裝Hawtio。
- 閱讀有關(guān)如何在各種環(huán)境中配置Hawtio的信息 ,例如配置安全性以及Hawtio的存儲(chǔ)位置。
- 查看如何在WildFly上配置Hawtio 。
- 我們更喜歡使用問(wèn)題跟蹤器來(lái)處理想法和問(wèn)題 ,但是如果您只想談?wù)揌awtio的所有事情,請(qǐng)加入我們的郵件列表 。
- 在GitHub上找到Hawtio源代碼 。
翻譯自: https://www.javacodegeeks.com/2014/08/hibernate-statistics-with-hawtio-and-jolokia.html
總結(jié)
以上是生活随笔為你收集整理的Hawtio和Jolokia的休眠统计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 运行ddos攻击的工具(如何运行ddos
- 下一篇: 应用的大数据:医疗保健的经济学