摘要:安裝的包默認(rèn)是的。所以我使用的來完成這些工作,同樣使用定時(shí)采樣定時(shí)匯報(bào)的方式來收集性能信息,并且官方宣稱耗費(fèi)資源小于。以上只是通過持續(xù)檢查程序穩(wěn)定性的一個(gè)基本方法。
PHP 7.0發(fā)布,網(wǎng)上關(guān)于新版的介紹很多,介于 7.0 在正式發(fā)布之前已經(jīng)發(fā)過若干個(gè) Beta、8個(gè) RC,應(yīng)該不會(huì)出現(xiàn)重大問題。今日我將一臺(tái)機(jī)器升級(jí)至 PHP 7.0 并將有關(guān)信息記錄如下。
本人使用 Ubuntu 12.04 LTS,在網(wǎng)上已經(jīng)找到 7.0 正式版的 ppa,所以不需要編譯,使用如下命令可直接安裝。
安裝 PHP7.0與擴(kuò)展
`sudo add-apt-repository ppa:ondrej/php-7.0
sudo apt-get update
sudo apt-get install php7.0-fpm php7.0-cli php7.0-common php7.0-json php7.0-mysql php7.0-opcache php7.0-curl
`
由于 Memcached、Redis 擴(kuò)展并沒有在 pecl 發(fā)布支持 PHP7 的最新版本,所以需要到 Github 找到 PHP7 的分支進(jìn)行手動(dòng)編譯安裝。
redis、memcached的github地址如下
https://github.com/phpredis/phpredis/
https://github.com/rlerdorf/php-memcached
Redis 安裝方法
`git clone https://github.com/phpredis/phpredis/
cd phpredis
git checkout php7
phpize
./configure
make
ssudo make install`
Memcached 安裝方法
Memcached 需要先下載 libmemecached 庫才能正常編譯。
`wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar -zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure
make
sudo make install
sudo apt-get install pkg-config
git clone https://github.com/rlerdorf/php-memcached.git
cd php-memcached
git checkout php7
phpize
./configure
make
sudo make install`
自己編譯的這2個(gè)擴(kuò)展需要手動(dòng)在配置文件里加載
`sudo touch /etc/php/mods-available/redis.ini
sudo touch /etc/php/mods-available/memcached.ini`
并將兩個(gè)文件內(nèi)容寫上
`extension=redis.so
extension=memcached.so`
`cd /etc/php/7.0/fpm/conf.d
sudo ln -s /etc/php/mods-available/redis.ini ./
sudo ln -s /etc/php/mods-available/memcached.ini ./`
如果命令行下需要啟用擴(kuò)展,同樣需要在 cli/conf.d 目錄下將其鏈接過去。
最后重啟服務(wù)器
sudo service php7.0-fpm restart
配置文件的調(diào)整
由于 PHP7.0 最大的改進(jìn)是性能,所以務(wù)必要啟用 opcache 保證其能發(fā)揮最大作用。
將 php.ini 的如下配置啟用。
`opcache.enable=1
opcache.enable_cli=1
opcache.file_cache=/tmp
opcache.error_log=/var/log/opcache_errors.log`
ppa 安裝的包默認(rèn) error_display 是 off 的。 而且 error_log 是注釋的,意味著出現(xiàn)問題時(shí)查看不到任何信息。
因此請寫入如下配置
`error_log=/var/log/php_errors.log
sudo chown www-data.www-data /var/log/php_errors.log`
本人安裝的是 Nginx 服務(wù)器,請確保用戶數(shù)組更改為與自己 webserver 一樣的,否則還是不會(huì)出現(xiàn)任何提示。 opcache_errors.log 文件同樣如此。
關(guān)于 opcache 的更多內(nèi)容可以訪問這里查看 http://www.laruence.com/2015/12/04/3086.html
異常處理與解決
在配置完成后,就需要實(shí)際的將程序跑一下了。目前將老系統(tǒng)轉(zhuǎn)移到 EN PHP7.0 后,第一個(gè)錯(cuò)誤就是
09-Dec-2015 12:27:48 Asia/Chongqing] PHP Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime() in /init.php:46
已經(jīng)不再存在set_magic_quotes_runtime 這個(gè)函數(shù)了。如果要兼容的話需要加上判斷
`if(PHP_VERSION_ID < 70000){
set_magic_quotes_runtime();
}`
監(jiān)控與調(diào)優(yōu)
我在系統(tǒng)里安裝了 OneAPM 提供的 Agent。這樣可以實(shí)時(shí)監(jiān)測到整個(gè)系統(tǒng)的運(yùn)行情況。其他版本的 Agent 官方網(wǎng)站已經(jīng)提供了下載。截止本文落筆,PHP 7.0版本官方提供了一個(gè)下載地址是:https://oneapm.kf5.com/attachments/download/366552/0015667f0036f47c827fcb8fcbfbc79/|36a06faeaa79de1947abf8380221dde13|
在這之前更多人會(huì)使用 xhprof 來檢測和優(yōu)化系統(tǒng),但是 xhprof 對(duì)整體的程序性能采集樣本無法很好的歸納,也沒有很好的可視化曲線圖和 Web 事務(wù)跟蹤,導(dǎo)致在短時(shí)間內(nèi)很難對(duì)系統(tǒng)瓶頸進(jìn)行評(píng)估。
所以我使用 OneAPM 的 PHP Agent 來完成這些工作,OneAPM 同樣使用定時(shí)采樣定時(shí)匯報(bào)的方式來收集性能信息,并且官方宣稱耗費(fèi)資源小于5%。不過對(duì)于使用性能提升數(shù)倍的 PHP7.0 來部署的話這些損耗可以忽略不計(jì),而且本人只在集群若干機(jī)器內(nèi)部署了一臺(tái)。
下面介紹基本的性能分析和故常排查方法。
比如可以在 dashboard 中查看到具體某個(gè)時(shí)間段整個(gè)系統(tǒng)的穩(wěn)定程度,我們在圖上看到了一個(gè)異常波峰,時(shí)間在早上6點(diǎn)左右,通過列表篩選器移除 WEB External 后看圖。
其他業(yè)務(wù)都很正常,執(zhí)行到最后 PHP 層,平均時(shí)間也只用了 10ms 左右。回到上圖點(diǎn)擊波峰的指示器可以看到具體明細(xì)。
當(dāng)打開詳情時(shí)可以明顯看到,原來是微信的接口在6點(diǎn)鐘抽了。同樣該頁面還可以監(jiān)控到第三方服務(wù)調(diào)用的響應(yīng)情況。比如 217ms 的 api.hitokoto.us 服務(wù)。
再簡單看一個(gè) SQL 緩慢的監(jiān)控。
通過 Web 事務(wù)的響應(yīng)時(shí)間占比查看到一個(gè)腳本執(zhí)行時(shí)間相對(duì)過長,通過上圖可以看到數(shù)據(jù)庫查詢占了579ms
通過切換到詳情頁面,可以看到整個(gè)腳本的調(diào)用過程,最終發(fā)現(xiàn)是程序 mysqli.php:88 行執(zhí)行的查詢占用了過長的時(shí)間。
以上只是通過 OneAPM 持續(xù)檢查程序穩(wěn)定性的一個(gè)基本方法。
程序在日常運(yùn)行中由于受到的訪問量不同,很有可能在某個(gè)時(shí)間點(diǎn)上出現(xiàn)大面積的延遲,比如并發(fā)突然增高或訪問某一部分接口的比例突然過高,而平時(shí) Apdex 指標(biāo)卻看起來非常漂亮,那么這個(gè)時(shí)候通過 OneAPM 就很容易發(fā)現(xiàn)程序中影響性能的部分,從而繼續(xù)改進(jìn)或優(yōu)化代碼。
(本文作者系 OneAPM 用戶,授權(quán) OneAPM 官方博客轉(zhuǎn)發(fā))
**OneAPM for PHP 能夠深入到所有 PHP 應(yīng)用內(nèi)部完成應(yīng)用性能管理和監(jiān)控,包括代碼級(jí)別性能問題的可見性、性能瓶頸的快速識(shí)別與追溯、真實(shí)用戶體驗(yàn)監(jiān)控、服務(wù)器監(jiān)控和端到端的應(yīng)用性能管理。想閱讀更多技術(shù)文章,請?jiān)L問 OneAPM 官方技術(shù)博客
。**
本文轉(zhuǎn)自 OneAPM 官方博客
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/21317.html
摘要:測試運(yùn)行多次并取平均值。文章數(shù)量測試的基準(zhǔn)測試基準(zhǔn)測試結(jié)果基準(zhǔn)測試結(jié)果基準(zhǔn)測試結(jié)果基準(zhǔn)測試結(jié)果基準(zhǔn)測試結(jié)果基準(zhǔn)測試結(jié)果不支持再次成為冠軍請注意的運(yùn)行環(huán)境需要或以上。同時(shí),再次不能正常工作并拋出錯(cuò)誤。 showImg(https://segmentfault.com/img/remote/1460000013690286); 我們每年都會(huì)嘗試深入了解不同版本的 PHP 和 HHVM 在各...
摘要:眾所周知,框架越重,性能相對(duì)就越低,因?yàn)橹匦涂蚣軙?huì)在解析時(shí)調(diào)用非常多的類方法和自定義函數(shù),導(dǎo)致性能嚴(yán)重下降。好在相對(duì)于而言,性能提升了將近一倍,而的也是個(gè)不錯(cuò)的替代方案。首先安裝和擴(kuò)展。我已向作者反饋,他修正了這個(gè)問題。 眾所周知,PHP框架越重,性能相對(duì)就越低,因?yàn)橹匦涂蚣軙?huì)在解析時(shí)調(diào)用非常多的類、方法和自定義函數(shù),導(dǎo)致性能嚴(yán)重下降。Laravel是一個(gè)非常受歡迎的PHP框架,但它也...
摘要:這里我們使用來安裝我們的開發(fā)環(huán)境,的安裝參考官方文檔使用安裝編譯器首先就是根據(jù)我們目標(biāo)版本拉取對(duì)應(yīng)的編譯器鏡像,這里我們版本是,于是使用這條命令然后創(chuàng)建文件,文件內(nèi)容如下對(duì)這個(gè)文件加上可執(zhí)行權(quán)限這樣我們就裝好了編譯器創(chuàng)建 這里我們使用Docker來安裝我們的開發(fā)環(huán)境,docker的安裝參考官方文檔https://docs.docker.com/install/ 使用Docker安裝Z...
摘要:是一個(gè)開放源代碼的程序調(diào)試器即一個(gè)工具,可以用來跟蹤,調(diào)試和分析程序的運(yùn)行狀況。以下為安裝示例,安裝請參考集成開發(fā)和斷點(diǎn)調(diào)試環(huán)境的配置。指令的配置路徑必須是絕對(duì)路徑。 Xdebug是一個(gè)開放源代碼的PHP程序調(diào)試器(即一個(gè)Debug工具),可以用來跟蹤,調(diào)試和分析PHP程序的運(yùn)行狀況。以下為Windows+Phpstorm+Xampp+Xdebug安裝示例,MAC安裝請參考集成開發(fā)和斷...
摘要:它報(bào)告函數(shù)級(jí)別的請求次數(shù)和各種指標(biāo),包括阻塞時(shí)間,時(shí)間和內(nèi)存使用情況。它獨(dú)有的數(shù)據(jù)計(jì)算的報(bào)告后處理階段。在數(shù)據(jù)收集時(shí),通過檢測循環(huán)來處理遞歸的函數(shù)調(diào)用,并通過給遞歸調(diào)用中每個(gè)深度的調(diào)用一個(gè)有用的命名來避開死循環(huán)。 簡介 XHProf是一個(gè)分層PHP性能分析工具。XHProf是一個(gè)分層PHP性能分析工具。它報(bào)告函數(shù)級(jí)別的請求次數(shù)和各種指標(biāo),包括阻塞時(shí)間,CPU時(shí)間和內(nèi)存使用情況。一個(gè)函數(shù)...
閱讀 4607·2021-09-26 09:55
閱讀 1352·2019-12-27 12:16
閱讀 879·2019-08-30 15:56
閱讀 1895·2019-08-30 14:05
閱讀 983·2019-08-30 13:05
閱讀 1261·2019-08-30 10:59
閱讀 1437·2019-08-26 16:19
閱讀 1880·2019-08-26 13:47