成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PHP應(yīng)用性能監(jiān)控實(shí)現(xiàn)原理

企業(yè)動(dòng)態(tài)
自1994年創(chuàng)建以來(lái),PHP早已由小家子氣的”P(pán)ersonal Home Page Tools”,演變?yōu)椤盤(pán)HP: Hypertext Preprocessor”,同時(shí)基于強(qiáng)大的可擴(kuò)展性與敏捷迭代特性,基本已經(jīng)成為互聯(lián)網(wǎng)科技公司的必備語(yǔ)言,為推動(dòng)互聯(lián)網(wǎng)發(fā)展提供著源源不斷的強(qiáng)大動(dòng)力。

一。PHP應(yīng)用場(chǎng)景

自1994年創(chuàng)建以來(lái),PHP早已由小家子氣的”Personal Home Page Tools”,演變?yōu)?rdquo;PHP: Hypertext Preprocessor”,同時(shí)基于強(qiáng)大的可擴(kuò)展性與敏捷迭代特性,基本已經(jīng)成為互聯(lián)網(wǎng)科技公司的必備語(yǔ)言,為推動(dòng)互聯(lián)網(wǎng)發(fā)展提供著源源不斷的強(qiáng)大動(dòng)力。

同時(shí)基于PHP的開(kāi)源軟件和開(kāi)發(fā)框架(優(yōu)秀如WordPress,Zend Framework,Laravel,Yaf,Hiphop等等)也在不斷地發(fā)展,使得PHP也被除互聯(lián)網(wǎng)公司之外的企業(yè)所大規(guī)模使用,而進(jìn)入企業(yè)級(jí)應(yīng)用開(kāi)發(fā)語(yǔ)言之列。

二。用戶監(jiān)控需求

我們知道,PHP的門(mén)檻低迭代快使得很多項(xiàng)目,因?yàn)榉N種原因變得架構(gòu)不清:

1.開(kāi)發(fā)者水平不足;

2.項(xiàng)目是從外包團(tuán)隊(duì)接手;

3.歷史問(wèn)題,積重難返;

4.反正性能奇差,反正已經(jīng)愈發(fā)不可控;

而要發(fā)現(xiàn)問(wèn)題卻又因?yàn)楦鞣N原因不可或很難調(diào)試,這些原因諸如:

1. 時(shí)間太久了,我也忘了怎么寫(xiě)的,要看代碼

2. 因?yàn)閿?shù)據(jù)不可造,邏輯無(wú)法到達(dá),不能重現(xiàn)

3. 項(xiàng)目不是我所在的團(tuán)隊(duì)開(kāi)發(fā),架構(gòu)以及代碼,羞澀惡心。

[[158893]]

圖1: PHP應(yīng)用系統(tǒng)的執(zhí)行模型

 

PHP的運(yùn)行階段可以大致分成三個(gè)階段:

1.Parse

2.Compile

3.Execute

其中Compile過(guò)程將會(huì)產(chǎn)生Op Code和Class Table,F(xiàn)unction Table,然后交給Execute最終執(zhí)行。Op Code是中間碼,被Zend Engine調(diào)用執(zhí)行。

不難看出,其實(shí)PHP與Java類(lèi)似,都是產(chǎn)生中間碼,運(yùn)行在各自的”虛機(jī)”上,可是為什么PHP的性能較Java、.NET、Go而言差別這么大呢?

一句話講,大家普遍認(rèn)為的”PHP是解釋型語(yǔ)言”其實(shí)是不嚴(yán)謹(jǐn)?shù)模琍HP不是不編譯,而是每次執(zhí)行都編譯,除此之外最嚴(yán)重的問(wèn)題即是較難實(shí)現(xiàn)并行運(yùn)算(注意只說(shuō)”較難”,使用PHP進(jìn)行并行計(jì)算的方案不止一個(gè))。基于Op Code的存在,已經(jīng)誕生了大量cache工具擴(kuò)展,可以有效提升PHP應(yīng)用的執(zhí)行性能,如OpCache,Apc,Apcu,Xcache等等。

對(duì)于使用PHP開(kāi)發(fā)的網(wǎng)站、接口、應(yīng)用系統(tǒng)而言,性能的瓶頸點(diǎn)會(huì)在什么地方呢?  做過(guò)PHP應(yīng)用性能優(yōu)化的朋友們都知道,遞歸、循環(huán)、資源操作、資源釋放等都是常見(jiàn)的瓶頸點(diǎn),這些經(jīng)常會(huì)造成阻塞或鎖。

可以得出CPU 、內(nèi)存 、各種I/O、各種網(wǎng)絡(luò)帶寬等的消耗是性能瓶頸點(diǎn)中的重中之重,我們可以簡(jiǎn)單歸結(jié)為:外部服務(wù)(如第三方API),資源讀寫(xiě),代碼異常。

處理這些問(wèn)題的通用作法是使用Xhprof,Xdebug或PHP-trace等工具來(lái)找出,并配合架構(gòu)師或高級(jí)工程師經(jīng)驗(yàn)來(lái)處理,方法包括單例、事務(wù)、按需加載、短事務(wù)、及時(shí)釋放等等(對(duì)于大多數(shù)公司與開(kāi)發(fā)人員來(lái)講,碰到性能問(wèn)題更多的作法是盲目的猜測(cè)與撓頭).但這些方法有哪些不足呢?

一眼可知,只能在測(cè)試或生產(chǎn)環(huán)境,產(chǎn)生問(wèn)題并明確之后進(jìn)行處理.測(cè)試環(huán)境還好,但如果是生產(chǎn)環(huán)境,事后處理雖能補(bǔ)救,但大多數(shù)面對(duì)的都是因功能受損造成的投訴或更嚴(yán)重的業(yè)務(wù)損失。

能夠在生產(chǎn)環(huán)境***時(shí)間發(fā)現(xiàn)或規(guī)避可能的性能問(wèn)題;準(zhǔn)確記錄已知或未知故障現(xiàn)場(chǎng)。這兩點(diǎn),則成為應(yīng)用性能管理的迫切需求。

三。透視寶PHP監(jiān)控實(shí)現(xiàn)原理

 

[[158894]]

圖2 Hook運(yùn)用示意

PHP運(yùn)行支撐的Zend Engine早在設(shè)計(jì)過(guò)程中已經(jīng)預(yù)留了豐富的Hook,可以有效干涉處理過(guò)程中的幾個(gè)關(guān)鍵步驟。

云智慧透視寶PHPAgent的研發(fā)實(shí)現(xiàn),當(dāng)然不能影響應(yīng)用系統(tǒng)原有的代碼,那么最簡(jiǎn)單有效的方式必然是實(shí)現(xiàn)一個(gè)PHP擴(kuò)展,PHPAgent利用了以下幾個(gè)Hook:

1.zend_compile_file & zend_compile_string

加載分析文件或字符串,本身就會(huì)造成非常大的IO,如果過(guò)多地執(zhí)行加載,無(wú)疑會(huì)造成內(nèi)存和CPU的消耗.通過(guò)這兩個(gè)hook,可以取得文件名、執(zhí)行行數(shù)、使用內(nèi)存和CPU占用時(shí)間。

2.zend_execute & zend_execute_internal

通過(guò)這兩個(gè)hook的使用,我們可以準(zhǔn)確地分析得出一個(gè)PHP應(yīng)用中的類(lèi)調(diào)用、方法調(diào)用、方法參數(shù)、內(nèi)存占用和CPU占用,加以分析,便可以準(zhǔn)確得出應(yīng)用系統(tǒng)運(yùn)行過(guò)程中的方法運(yùn)行棧,API調(diào)用地址,SQL語(yǔ)句,Cache Key以及Cache***等關(guān)鍵信息。

3.zend_throw_exception_hook

利用異常鉤子,可以準(zhǔn)確地得到應(yīng)用系統(tǒng)運(yùn)行過(guò)程中出現(xiàn)的異常信息,當(dāng)然包括異常發(fā)生的類(lèi)\方法位置,參數(shù),異常code和異常message

4.zend_error_cb

錯(cuò)誤鉤子則更加直接,可以準(zhǔn)確得到系統(tǒng)運(yùn)行過(guò)程中出現(xiàn)的任何一個(gè)warning,代碼錯(cuò)誤或語(yǔ)法錯(cuò)誤。

 

[[158895]]

圖3 PHPAgent注冊(cè)與應(yīng)用Hook流程

[[158896]]

圖4 zend_execute hook的應(yīng)用示意(偽代碼)

上圖大致解釋了我們是如何運(yùn)用zend_execute hook進(jìn)行數(shù)據(jù)采集的: 先取得方法名,同時(shí)通過(guò)規(guī)則過(guò)濾引擎,判斷哪些是我們關(guān)注或不關(guān)注的(類(lèi)\方法的黑白名單),然后通過(guò)AGENT_BEGIN宏記錄方法開(kāi)始時(shí)間,方法名,行數(shù),內(nèi)存起點(diǎn)與參數(shù),在執(zhí)行原有zend_execute之后,再通過(guò)AGENT_END宏記錄結(jié)束時(shí)間,內(nèi)存止點(diǎn)。

通過(guò)上述Hook的應(yīng)用,已經(jīng)可以得到我們所關(guān)注的指標(biāo)數(shù)據(jù): 類(lèi)\方法執(zhí)行順序,執(zhí)行時(shí)間,內(nèi)存占用,接口\DB等資源連接,SQL語(yǔ)句和執(zhí)行時(shí)間等。

經(jīng)過(guò)嚴(yán)格的壓力測(cè)試和生產(chǎn)環(huán)境部署實(shí)踐,PHPAgent對(duì)原有應(yīng)用系統(tǒng)的性能影響在5%以內(nèi).經(jīng)過(guò)一些參數(shù)調(diào)配,可以將性能影響降到更低,這些參數(shù)包括:

1.是否啟動(dòng)異常鉤子

2.是否啟動(dòng)錯(cuò)誤鉤子

3.是否啟用數(shù)據(jù)采樣

4.是否啟用棧追蹤

5.是否使用黑白名單(URL\Header\Cookie\Request Params)

6.是否啟用UDP發(fā)送代理

7.關(guān)注請(qǐng)求時(shí)間響應(yīng)閾值

8.關(guān)注方法時(shí)間響應(yīng)閾值

四。透視寶PHPAgent監(jiān)控部署流程

透視寶PHPAgent遵守SmartAgent插件規(guī)范,那么一切從SmartAgent的安裝部署開(kāi)始。

1、登錄云智慧透視寶官網(wǎng):https://www.toushibao.com/ ,點(diǎn)擊頁(yè)面右上角導(dǎo)航的“免費(fèi)試用”,正確填寫(xiě)免費(fèi)試用的申請(qǐng)信息后會(huì)彈出下面的對(duì)話框,同時(shí)激活郵件會(huì)自動(dòng)發(fā)送到你的郵箱中,按照流程注冊(cè)帳號(hào)即可。

[[158897]]

2、注冊(cè)成功后,登錄透視寶,點(diǎn)擊配置-應(yīng)用,在配置頁(yè)面中下載安裝Smart Agent。安裝成功后,Smart Agent會(huì)根據(jù)系統(tǒng)配置自動(dòng)獲取主機(jī)信息,大致兩分鐘后,您就可以在“主機(jī)→服務(wù)器”模塊中查看該服務(wù)器的CPU、內(nèi)存、網(wǎng)卡、磁盤(pán)及進(jìn)程等性能數(shù)據(jù)。

[[158898]]

3、如果要監(jiān)控應(yīng)用運(yùn)行時(shí)代碼、主機(jī)中服務(wù)和數(shù)據(jù)庫(kù)性能數(shù)據(jù),您需要進(jìn)一步安裝和配置Smart Agent提供的各種插件,這是因?yàn)镾mart Agent實(shí)現(xiàn)了一種開(kāi)放式的插件式結(jié)構(gòu),對(duì)每個(gè)運(yùn)行時(shí)代碼、服務(wù)和數(shù)據(jù)庫(kù)的監(jiān)控都是通過(guò)相應(yīng)的插件來(lái)實(shí)現(xiàn)的。

[[158899]]

3。Smart Agent在安裝完成后,加載過(guò)程中自動(dòng)發(fā)現(xiàn)你的應(yīng)用組件,如果沒(méi)有自動(dòng)監(jiān)測(cè)到PHP環(huán)境,也可以手動(dòng)添加PHPAgent。如上圖所示,點(diǎn)擊“管理”入口,進(jìn)入“插件管理”,點(diǎn)擊頁(yè)面下部的“添加服務(wù)”,選擇PHPAgent后,點(diǎn)擊“創(chuàng)建”。

創(chuàng)建完畢后,點(diǎn)擊“ON”。(該ON操作只是初始化用戶的信息,以便以后采集到的信息能夠正確的回傳給該用戶。)

4。當(dāng)然,如果對(duì)于已經(jīng)安裝完成的PHPAgent,也可以直接在此管理界面上方便地進(jìn)行升級(jí)與降級(jí)操作。

[[158900]]5。安裝過(guò)程腳本默認(rèn)會(huì)使用whereisphp尋找系統(tǒng)內(nèi)PHP進(jìn)行安裝。

如果編譯安裝PHP,請(qǐng)賦腳本中APPD_PHP_PATH變量值到PHP bin目錄,如: /usr/local/php-5.5.14/bin。

執(zhí)行PHPAgent/install.sh start安裝命令。

6。重啟Web Server

安裝開(kāi)啟PHP代碼監(jiān)控插件后,需要您手動(dòng)重啟web Server(apache\httpd\Php-fpm等軟件)

7。查看PHP應(yīng)用數(shù)據(jù)

恭喜!此時(shí)配置已經(jīng)完成,如果應(yīng)用有正常訪問(wèn)進(jìn)入,您就可以在“應(yīng)用”模塊中查看應(yīng)用數(shù)據(jù)了。

[[158901]]五。透視寶PHP監(jiān)控功能特點(diǎn)

在功能方面,透視寶無(wú)論是在PHP,還是其他如Java、.NET等主流語(yǔ)言的監(jiān)控上,都包括:查看執(zhí)行最慢的10個(gè)元素,包括元素執(zhí)行次數(shù)、持續(xù)時(shí)長(zhǎng)和占用時(shí)長(zhǎng)百分比;查看HTTP請(qǐng)求參數(shù),包括請(qǐng)求的響應(yīng)狀態(tài)、鏈接頁(yè)面、具體的請(qǐng)求參數(shù)及返回結(jié)果;查看代碼執(zhí)行堆棧的詳細(xì)樹(shù)狀信息,包括每個(gè)方法的計(jì)算時(shí)間、總耗時(shí)和被調(diào)用的次數(shù),您能直接看到特殊標(biāo)識(shí)的最慢方法;查看涉及SQL語(yǔ)句的總耗時(shí)排序,包括SQL執(zhí)行總耗時(shí)、執(zhí)行次數(shù)和具體的查詢語(yǔ)句;第三方API調(diào)用。

[[158902]]

上圖是PHPAgent發(fā)現(xiàn)的某應(yīng)用的資源拓?fù)渑c請(qǐng)求響應(yīng)概述。

[[158903]]

上圖以散點(diǎn)柱餅圖描述了某段時(shí)間內(nèi)一個(gè)PHP應(yīng)用的請(qǐng)求響應(yīng)時(shí)間分布,可以一眼看出有問(wèn)題的請(qǐng)求是哪些。

[[158904]]

對(duì)于某一個(gè)單次請(qǐng)求事務(wù)的拓?fù)渑c代碼運(yùn)行棧可以準(zhǔn)確地進(jìn)行分析:

 

 下面是對(duì)一個(gè)應(yīng)用中PHPAgent發(fā)現(xiàn)的一段時(shí)間內(nèi)對(duì)Mysql資源操作的分析。

 基于某一個(gè)集群的應(yīng)用,透視寶可以自動(dòng)進(jìn)行總拓?fù)涞淖R(shí)別和描繪。

  

 當(dāng)然,可以對(duì)已經(jīng)識(shí)別的應(yīng)用站點(diǎn)拓?fù)溥M(jìn)行分組高亮。

責(zé)任編輯:李英杰 來(lái)源: 51cto.com
相關(guān)推薦

2015-11-17 18:06:22

云智慧PHP應(yīng)用性能

2013-08-22 10:15:32

應(yīng)用性能監(jiān)控系統(tǒng)管理

2013-03-27 10:01:53

網(wǎng)絡(luò)應(yīng)用檢測(cè)工具

2015-05-12 15:02:23

API應(yīng)用性能監(jiān)控云智慧

2014-11-06 10:00:46

Gartner

2015-06-25 12:41:53

實(shí)時(shí) Node應(yīng)用性能監(jiān)測(cè)

2011-11-09 11:37:29

CA TechnoloGartner

2015-07-27 11:00:33

應(yīng)用性能監(jiān)控工具APM

2019-10-10 09:01:46

監(jiān)控服務(wù)器應(yīng)用

2015-12-11 11:39:15

.net代碼

2015-12-11 11:49:19

java

2021-08-09 16:39:52

工具JVM剖析

2014-08-04 16:38:37

移動(dòng)應(yīng)用

2015-03-11 15:08:25

2015WOT峰會(huì)應(yīng)用性能監(jiān)控與管理

2011-11-09 12:28:06

CA Technolo領(lǐng)導(dǎo)者象限

2015-08-27 13:44:25

APM

2012-10-09 09:43:50

WLAN優(yōu)化無(wú)線局域網(wǎng)WLAN

2023-07-19 15:45:47

ReactDOM輕量級(jí)

2020-03-30 14:00:21

Flutter前端代碼

2015-07-24 16:12:58

應(yīng)用性能管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 91久久久久久久久久久 | 亚洲精品国产电影 | 成人小视频在线免费观看 | 久久久www成人免费精品张筱雨 | 日日av| 成人亚洲精品 | 日本不卡一区二区 | 99久久99 | 日韩一区二区三区精品 | 精品一区二区av | 国产精品久久777777 | 日韩不卡一区二区三区 | 国产精品久久国产精品久久 | 99色视频| 成人国产免费视频 | 欧美国产日韩一区二区三区 | 在线观看中文字幕 | 日韩av啪啪网站大全免费观看 | 日韩精品1区2区 | 99热精品6| 最新av在线播放 | 欧美一区二区在线播放 | 日日操网站 | 免费看大片bbbb欧美 | 中文字幕亚洲一区二区三区 | 久久高潮 | 国产91av视频在线观看 | av中文字幕在线播放 | 91黄在线观看| 99九色| 中文字幕在线视频网站 | 欧美日韩一区二区三区四区 | www.久久 | 久久99精品久久久久久琪琪 | 中文字幕久久久 | 欧美乱操 | 精品一区二区久久久久久久网站 | 欧美黄色一区 | 欧美日韩国产一区二区 | 国产a区| 欧美一级免费看 |