檢測C / C ++應(yīng)用程序性能監(jiān)視

隨著AppDynamics Winter '16發(fā)布,AppDynamics現(xiàn)在支持通過監(jiān)控SDK監(jiān)控C / C ++應(yīng)用程序,該監(jiān)控SDK支持與其他支持語言相同的實時,端到端,用戶到數(shù)據(jù)庫性能可見性,以實現(xiàn)快速根 - 因為分析和問題解決。

C / C ++已經(jīng)有一段時間了,它被認(rèn)為是高性能應(yīng)用程序的語言,主要是因為它編譯為機(jī)器代碼并直接與操作系統(tǒng)接口而沒有中間層。

雖然多年來應(yīng)用程序的復(fù)雜性已經(jīng)爆炸,現(xiàn)代語言由于各種原因而不斷發(fā)展并變得越來越流行,但基于C / C ++的應(yīng)用程序仍然是許多企業(yè)的業(yè)務(wù)關(guān)鍵應(yīng)用程序環(huán)境的核心部分。隨著這些應(yīng)用程序?qū)I(yè)務(wù)變得越來越重要,在應(yīng)用程序問題影響收入之前,有一種簡單而快速的方法來監(jiān)控,診斷和解決應(yīng)用程序問題比以往任何時候都更加重要。

介紹AppDynamics C / C ++應(yīng)用程序性能管理模塊

AppDynamics C / C ++應(yīng)用程序性能管理(APM)模塊在最復(fù)雜的分布式環(huán)境中提供C / C ++應(yīng)用程序的端到端業(yè)務(wù)事務(wù)中心管理,通過主動識別和解決性能問題提供卓越的用戶體驗。

作為AppDynamics應(yīng)用智能平臺的關(guān)鍵模塊,C / C ++ APM模塊通過監(jiān)控SDK監(jiān)控C / C ++應(yīng)用程序,該SDK支持與其他支持的語言相同的實時,端到端,用戶到數(shù)據(jù)庫性能可見性,用于快速根本原因分析和問題解決。

您可以使用SDK檢測C / C ++應(yīng)用程序代碼,重新編譯代碼并在生產(chǎn)中進(jìn)行部署,以獲得性能的實時可見性,并在幾秒鐘內(nèi)找到代碼瓶頸的根本原因,所有這些都是最小的開銷。AppDynamics C / C ++應(yīng)用程序監(jiān)控SDK支持自動發(fā)現(xiàn)和映射服務(wù)并與C / C ++應(yīng)用程序交互的所有層,自動動態(tài)基線,數(shù)據(jù)收集器和運行狀況規(guī)則,以及管理關(guān)鍵指標(biāo),包括應(yīng)用程序負(fù)載和響應(yīng)時間,和系統(tǒng)資源,包括CPU,內(nèi)存和磁盤I / O.

檢測C / C ++應(yīng)用程序進(jìn)行監(jiān)控

使用C / C ++應(yīng)用程序代碼來定義和監(jiān)視業(yè)務(wù)事務(wù),捕獲快照,分布式事務(wù)關(guān)聯(lián),后端監(jiān)視,錯誤監(jiān)視以及從方法收集數(shù)據(jù)非常簡單。

例如,為了像您在圖1中看到的那樣定義和監(jiān)視業(yè)務(wù)事務(wù),您只需要在appd_bt_begin()和appd_bt_end()調(diào)用之間包含構(gòu)成要監(jiān)視的請求的代碼。請參閱下面的檢測之前和之后的代碼示例,您將注意到只需要兩行代碼即可將代碼作為業(yè)務(wù)事務(wù)進(jìn)行監(jiān)視。

檢測前的代碼示例:

AccountOpResult AccountMgr::CreateAccount(const std::string& username, const std::string& password)

{

? ? AccountOpResult result = AOR_OK;

? ? if (utf8length(username) > MAX_ACCOUNT_STR)

? ? {

? ? ? ? result = AOR_NAME_TOO_LONG;

? ? }

? ? else if (GetId(username))

? ? {

? ? ? ? result = AOR_NAME_ALREADY_EXISTS;

? ? }

? ? else if (!loginDB.PExecute("INSERT INTO account(username,pass_hash) VALUES('%s','%s')", username, CalculatePassHash(password)))

? ? {

? ? ? ? result = AOR_DB_INTERNAL_ERROR;

? ? }

? ? return result;

}

檢測后的代碼示例:

AccountOpResult AccountMgr::CreateAccount(const std::string& username, const std::string& password)

{

? ? AccountOpResult result = AOR_OK;

appd_bt_handle bt = appd_bt_begin(__func__, NULL);

? ? if (utf8length(username) > MAX_ACCOUNT_STR)

? ? {

? ? ? ? result = AOR_NAME_TOO_LONG;

? ? }

? ? else if (GetId(username))

? ? {

? ? ? ? result = AOR_NAME_ALREADY_EXISTS;

? ? }

? ? else if (!loginDB.PExecute("INSERT INTO account(username,pass_hash) VALUES('%s','%s')", username, CalculatePassHash(password)))

? ? {

? ? ? ? result = AOR_DB_INTERNAL_ERROR;

? ? }

appd_bt_end(bt);

? ? return result;

}

appd_bt_begin()返回一個句柄,用于影響該業(yè)務(wù)事務(wù)的后續(xù)例程。如果要創(chuàng)建與上游業(yè)務(wù)事務(wù)關(guān)聯(lián)的業(yè)務(wù)事務(wù),請傳遞上游事務(wù)的相關(guān)標(biāo)頭,以便您創(chuàng)建的新事務(wù)可以與之關(guān)聯(lián)。

通過插入類似的代碼,您可以執(zhí)行分布式事務(wù)關(guān)聯(lián),后端監(jiān)視,錯誤監(jiān)視以及從方法收集數(shù)據(jù)(鍵/值)

希望這能為您提供C ++監(jiān)控解決方案的概述,并幫助您入門。在AppDynamics文檔中了解有關(guān)C / C ++監(jiān)控SDK的配置,檢測和其他詳細(xì)信息的更多信息? 。

另外本人從事在線教育多年,將自己的資料整合建了一個QQ群,對于有興趣一起交流學(xué)習(xí)C/C++的初學(xué)者可以加群:825414254,里面有大神會給予解答,也會有許多的資源可以供大家學(xué)習(xí)分享,歡迎大家前來一起學(xué)習(xí)進(jìn)步!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容