OneAPM
从上面的使用来看,SocketLog 和 XHProf 都有两个不足之处,一是需要埋代码,二是只是基于单独一个页面会话的。而 OneAPM 相对来讲,就更强大了,可以理解为云端 SaaS 版的 XHProf 和更强大的 SocketLog。不过有着更为强大的优势。比如:
OneAPM 的安装过程也比较简单,不过由于是 SaaS 服务,所以得上官网注册一个账号。登录了之后,在应用程序里,点击添加,再选中 PHP,就进入了安装探针的说明。
分为如下几步:
1. 获取授权编号
OneAPM 授权凭证,用于配置和身份识别。
2. 下载 OneAPM PHP agent 安装程序
3. 解压 OneAPM PHP Agent
tar -xzf OneAPM_php_Agent_2.3.11.tar.gz
4. 安装 OneAPM PHP Agent
-
定位路径至您的安装包所在文件夹
cd oneapm-php5-linux-install-script
-
执行安装命令
sudo ./oneapm-install install
5. 输入 License Key
请点击步骤1中的「生成授权编号按钮」成功安装,界面如下:
若出现以下信息,则代表安装成功。
OneAPM is now installed on your system. Congratulations!
当页面出现以下提示时,启动 Daemon
And then start php-agent in /usr/bin/oneapm-daemon
运行以下指令来启动 Daemon
sudo /usr/bin/oneapm-daemon
重启 Apache 或你使用的 web 调度程序 「如 php-fpm 」
6. 静候5分钟,开启 OneAPM 之旅
静候5分钟,等待应用程序向 OneAPM 发送应用程序性能数据,即可开始使用 OneAPM 应用性能管理。
OneAPM 收集的数据很丰富。将收集的响应时间数据,分为四个大块:
-
Web 事务,就是页面业务逻辑本身
-
数据库,数据库的连接和数据读取
-
错误统计,对所有类型的错误做了归类统计
-
外部服务,即外部 API 等的设备
以笔者的站点为例,12小时的数据如下图:
从上面这个图,我们看到响应时间,慢的达到了600 ms 以上,那是什么导致的呢?我们可以分别查看:
可见 Web 事务比较稳定,可以比较清楚地看到平均的响应时间在 50ms-75ms之间。
数据库响应时间也很短,在几 ms 这个级别。而外部服务就明显在几百 ms 这个级别,还有的高达 600 ms 。
不说别的,就通过这简单的报表,从目前看,就可以定位到,想要做优化,从外部服务的响应时间上下手优化,带来的效果是最大的。
下面我们再来看看三个细化一层的报表 ,在 Web 事务统计中,尽管平均数很低,但是也列出了响应时间最长的5个请求。如下:
从上面的数据可以看出,响应时间最长的几个,主要突出在 bind.php
,这个是负责 QQ 登录的请求,需要向腾讯请求数据。
而在数据库一栏中,可以看到最慢的5个表格的情况。
在外部的服务中,果不出所料,是对微博、微信、QQ 登录、七牛上传、支付宝通知等外部服务,所占时间最长。如下图所示。
这只是普通的统计报表,对于具体的某一个慢的页面,更有详细的调用分析。
比如上面的 bind.php
,果真最慢的是从网络上获取数据。也就是说,第三方登录时,从第三方网站取数据花了绝大部分时间。 去查看详情,有两个不足之处,一是需要埋代码,二是只是基于单独一个页面会话的。而 OneAPM 称为慢事务追踪,拉到页面的最底部就能看到。
在后台报表中,我们同样也能看到是哪些 SQL 语句慢。比如如下是 bind.php
中慢的 SQL 语句。
更为重要的是,还有所有错误信息的收集,也一目了然。
所以无论从功能之强大,还是易用之方便,有两个不足之处,一是需要埋代码,二是只是基于单独一个页面会话的。而 OneAPM 不愧是商业化的 SaaS 服务,比 XHProf 胜去了不少。在笔者的项目中,已经大量使用。并取得了好的效果。
以上四个项目,让我们对自己所写的代码,更加成竹在胸,无论是执行过程还是调优着手了都有了充分的把握。特意对比,汇总整理的这四大神器,希望它们能改善每一位 PHP 开发者的生活,让我们的 PHP 开发不再那么地苦逼!
PHP之友评论