设为首页 收藏本站
查看: 608|回复: 0

[经验分享] php7.0 安装使用与性能监测

[复制链接]

尚未签到

发表于 2018-12-16 15:46:32 | 显示全部楼层 |阅读模式
  本月php7.0发布,网上关于新版的介绍很多,介于7.0在正式发布之前已经发过若干个beta、8个RC,应该不会出现重大问题。今日我将一台机器升级至php7.0并将有关信息记录如下。
  本人使用 ubuntu 12.04 LTS,在网上已经找到7.0正式版的ppa,所以不需要编译,使用如下命令可直接安装。
安装PHP7.0与扩展
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扩展并没有在pecl发布支持php7的最新版本,所以需要到github找到php7的分支进行手动编译安装。
  redis、memcached的github地址如下
  https://github.com/phpredis/phpredis/5
  https://github.com/rlerdorf/php-memcached4
  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个扩展需要手动在配置文件里加载
sudo touch /etc/php/mods-available/redis.ini  
sudo touch /etc/php/mods-available/memcached.ini
  
#并将两个文件内容写上 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 ./
  
如果命令行下需要启用扩展,同样需要在cli/conf.d 目录下将其链接过去。
  最后重启服务器 sudo service php7.0-fpm restart
配置文件的调整
  由于php7.0最大的改进是性能,所以务必要启用opcache 保证其能发挥最大作用。
#将php.ini 的如下配置启用。  
opcache.enable=1
  
opcache.enable_cli=1
  
opcache.file_cache=/tmp
  
opcache.error_log=/var/log/opcache_errors.log
  
#ppa安装的包默认error_display 是off的。 而且error_log 是注释的,意味着出现问题时查看不到任何信息。
  
#因此请写入如下配置 error_log=/var/log/php_errors.log
  
sudo chown www-data.www-data /var/log/php_errors.log #本人安装的是nginx服务器,请确保用户数组更改为与自己webserver一样的,否则还是不会出现任何提示。opcache_errors.log文件同样如此。
  关于opcache的更多内容可以访问这里查看 http://www.laruence.com/2015/12/04/3086.html9
异常处理与解决
  在配置完成后,就需要实际的将程序跑一下了。目前将老系统转移到php7.0后,第一个错误就是
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  
已经不再存在set_magic_quotes_runtime 这个函数了。如果要兼容的话需要加上判断
  
if(PHP_VERSION_ID < 70000){
  
    set_magic_quotes_runtime();
  
}
监控与调优
  我在系统里安装了iyunv提供的Agent。这样可以实时监测到整个系统的运行情况。其他版本的Agent官方网站已经提供了下载。截止本文落笔,php7.0版本官方提供了一个下载地址是;8https://iyunv.kf5.com/attachments/download/366552/0015667f0036f47c827fcb8fcbfbc79/8
  在这之前更多人会使用xhprof来检测和优化系统,但是xhprof对整体的程序性能采集样本无法很好的归纳,也没有很好的可视化曲线图和web事务跟踪,导致在短时间内很难对系统瓶颈进行评估。
  所以我使用iyunv的phpAget来完成这些工作,iyunv同样使用定时采样定时汇报的方式来收集性能信息,并且官方宣称耗费资源小于5%。不过对于使用性能提升数倍的php7.0来部署的话这些损耗可以忽略不计,而且本人只在集群若干机器内部署了一台。
  下面介绍基本的性能分析和故常排查方法。
3

  比如可以在dashboard中查看到具体某个时间段整个系统的稳定程度,我们在图上看到了一个异常波峰,时间在早上6点左右,通过列表筛选器移除WEB External 后看图。
1

  其他业务都很正常,执行到最后php层,平均时间也只用了10ms左右。回到上图点击波峰的指示器可以看到具体明细。
2

  当打开详情时可以明显看到,原来是微信的接口在6点钟抽了。同样该页面还可以监控到第三方服务调用的响应情况。比如217ms的api.hitokoto.us服务。
  再简单看一个SQL缓慢的监控。

  我通过web事务的响应时间占比查看到一个脚本执行时间相对过长,通过上图可以看到数据库查询占了579ms
1

  通过切换到详情页面,可以看到整个脚本的调用过程,最终发现是程序mysqli.php:88行执行的查询占用了过长的时间。
  以上只是通过iyunv持续检查程序稳定性的一个基本方法。
  程序在日常运行中由于受到的访问量不同,很有可能在某个时间点上出现大面积的延迟,比如并发突然增高或访问某一部分接口的比例突然过高,而平时apdex指标却看起来非常漂亮,那么这个时候通过iyunv就很容易发现程序中影响性能的部分,从而继续改进或优化代码。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-652116-1-1.html 上篇帖子: php 之 在win10 下篇帖子: 三、编译安装php
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表