當前位置:首頁 > 新聞中心 > 互聯網動態
                                                                                  巧用工具進行php性能分析責任編輯 :李飛    文章來源 :星翼創想(www.newportcoastmaids.com)    發布時間 :2015-09-21    閱讀次數:3910


                                                                                  性能分析是衡量應用程序在代碼級別的相對性能。性能分析將捕捉的事件包括:CPU的使用,內存的使用,函數的調用時長和次數,以及調用圖。性能分析的行為也會影響應用性能。


                                                                                  影響的程度取決于基準測試?;鶞蕼y試在外部執行,用于衡量應用真實性能。所謂真實性能,即終端用戶所體驗的應用表現。


                                                                                  什么時候應該進行性能分析?

                                                                                  在考慮是否進行性能分析時,你首先要想:應用是否存在性能問題?如果有,你要進一步考慮:這個問題有多大?

                                                                                  如果你不這樣做,將會陷入一個陷阱——過早優化,這可能會浪費你的時間。

                                                                                  為了評斷應用是否存在性能問題,你應該確定性能目標。例如,100個并發用戶的響應時間小于1s。然后,你需要進行基準測試,看是否達到這個目標。一個常見的錯誤是,在開發環境進行基準測試。事實上,你必須在生產環境進行基準測試。(實際生產環境或模擬的生產環境,后者很容易在 SaaS 實現。

                                                                                  用于基準測試的產品很多,包括 ab,siege 和 JMeter。我個人比較喜歡JMeter的功能集,但 ab 和 siege 更加易用。

                                                                                  一旦你確定應用存在性能問題,就需要分析其性能,實施改進,然后再一次進行基準測試,查看問題是否解決。每一次變更之后,你都該進行基準測試查看效果。如果你做了很多變更,卻發現應用性能有所下降,你就無法確定具體是哪一次變更導致了這個問題。

                                                                                  下圖是我定義的性能生命周期:

                                                                                  性能下降的一般原因

                                                                                  導致性能下降的一般原因中,有些相當出人意料。即便是像 PHP 這樣的高級語言,代碼的好壞也很少是問題的根源。在當今的硬件配置條件下,CPU 很少是性能限制的原因。常見的原因反而是:
                                                                                  數據存儲
                                                                                  • PostgreSQL
                                                                                  • MySQL
                                                                                  • Oracle
                                                                                  • MSSQL
                                                                                  • MongoDB
                                                                                  • Riak
                                                                                  • Cassandra
                                                                                  • Memcache
                                                                                  • CouchDB
                                                                                  • Redis
                                                                                  外部資源
                                                                                  • APIs
                                                                                  • 文件系統
                                                                                  • 網絡接口
                                                                                  • 外部流程
                                                                                  糟糕的代碼

                                                                                  選擇哪一種性能分析器?

                                                                                  在 PHP 世界里,有兩個截然不同的的性能分析器——主動和被動。

                                                                                  主動 VS 被動性能分析

                                                                                  主動分析器在開發過程中使用,由開發人員啟用。主動分析器收集的信息比被動分析器多,對性能的影響更大。通常,主動分析器不能用在生產環境中。Xdebug 就是一種主動分析器。

                                                                                  因為無法在生產環境中使用主動分析器,Facebook 推出了一個被動分析器——XHprof。XHprof 是為了在生產環境中使用而打造的。它對性能的影響最小,同時收集足夠的信息用于診斷性能問題。XHprof 和 OneAPM 都是被動分析器。

                                                                                  通常,Xdebug 收集的額外信息對于一般的性能問題分析并不必要。這意味著,被動分析器是用于不間斷性能分析的更佳選擇,即使是在開發環境中。

                                                                                  Xhprof + Xhgui

                                                                                  Xhprof 由 Facebook 開發的,包含一個基本的用戶界面用于查看性能數據。此外,Paul Reinheimer 開發了 Xhgui 和一個增強的用戶界面(UI)用于查看、比較和分析性能數據。

                                                                                  安裝

                                                                                  安裝 XHPROF
                                                                                  Xhprof 可通過 PECL 安裝,步驟如下:
                                                                                  $pecl install xhprof-beta
                                                                                  該 pecl 命令將嘗試自動更新你的 php.ini 設置。pecl 嘗試更新的文件可以使用以下命令找到:
                                                                                  $ pecl config-getphp_ini
                                                                                  它會在指定的文件(如果有的話)頂部增加新的配置行。你可能想把他們移到一個更合適的位置。
                                                                                  一旦你編譯了該擴展程序,您必須啟用它。為此,您需要在 PHP INI 文件添加以下代碼:
                                                                                  [xhprof] extension=xhprof.so
                                                                                  之后,結合 Xhgui 就能輕松地執行性能分析與檢查。
                                                                                  安裝 XHGUI
                                                                                  安裝 Xhgui,必須直接從 git 獲取。該項目可以在 github 上找到,地址為
                                                                                  Xhgui 要求:
                                                                                  • PHP 5.3+
                                                                                  • ext/mongo
                                                                                  • composer
                                                                                  • MongoDB(若只需要收集數據,則可選可不選;若需要數據分析,則為必選)
                                                                                  首先,克隆項目到任意位置。在基于 Debian 的 Linux 系統(例如 Ubuntu 等等),可能是 /var/www。在 Mac OS X 系統,可能是 /Library/WebServer/Documents。
                                                                                  $cd /var/www
                                                                                  $ git clone https://github.com/perftools/xhgui.git $ cd xhgui
                                                                                  $ php install.php
                                                                                  最后一個命令是運行 composer 以安裝依賴并檢查 xhgui 緩存目錄的權限。如果失敗,你可以手動運行 composer install。

                                                                                  下一步,你可能需要創建配置文件。這一步很容易實現,可以使用在 /path/to/xhgui/config/config.default.php 下的默認配置文件。

                                                                                  如果你在本地運行 mongodb ,沒有身份驗證,則可能不需要這樣做。因為它將回退為默認值。而在多服務器環境中,你會需要一個所有服務器都能進行存儲的遠程 mongodb 服務器,并進行恰當的配置。

                                                                                  為提高 MongoDB 的性能,你可以運行以下指令以添加索引:
                                                                                  $ mongo > use xhprof
                                                                                  db.results.ensureIndex( {'meta.SERVER.REQUEST_TIME': -1} ) db.results.ensureIndex( {'profile.main().wt': -1} ) db.results.ensureIndex( {'profile.main().mu': -1} ) db.results.ensureIndex( {'profile.main().cpu': -1} ) db.results.ensureIndex( {'meta.url':1} )


                                                                                  深圳市星翼創想網絡科技有限公司,給你專業的網站建設新體驗!


                                                                                  文章轉載請保留網址:http://www.newportcoastmaids.com/news/industry/1486.html

                                                                                  掃碼添加微信
                                                                                  159 8667 8737
                                                                                  24小時電話

                                                                                  国产揄拍视频在线观看激情五月|国产精品人人做人人|极品粉嫩国产18尤物在线观看|亚洲の无码热の综合