如何使用 APM 搞定 PHP 应用的性能优化?
APM 究竟是什么?
很多人都是第一次听说 APM 的概念,本文主要阐述如何使用 APM 的解决方案来实现 PHP 应用性能的优化。首先先介绍一下 APM (Application Performance Management)即应用性能管理,对企业系统即时监控以实现对应用程序性能管理和故障管理的系统化的解决方案。
应用性能管理是一个比较新的网络管理方向,主要指对企业的关键业务应用进行监测、优化,提高企业应用的可靠性与质量,保证用户得到良好的服务,降低 IT 总所有成本(Total Cost of Ownership,简称 TCO)。一个企业的关键业务应用的性能强大,可以提高竞争力,并取得商业成功,因此,加强应用性能管理(APM)可以带来巨大商业利益。
支持的语言和环境
兼容性和安装要求
本文,以国内应用性能管理领军企业 OneAPM举例,他们支持的应用服务器和应用框架如下表所示:
1.操作系统
CentOS 5.5 以上
Ubuntu 11 以上
RedHat Enterprise Linux (RHEL) 5 及以上
2.PHP 版本
PHP 5.2.13 及以上
PHP 5.3 及以上
PHP 5.4 及以上
PHP 5.5 及以上
PHP 5.6 及以上
3.数据库
mysql [mysql , pdo , mysqli]
4.WebServer
Apache 的 mod_php 模式(线程安全与非线程安全)
FastCGI 模式(例如:php-fpm)
5.明确不支持的框架
Yaf
6.可以安装的框架
Wordpress
Drupal
Magento
Zend
CakePHP
Codelgniter
Symfony
Laravel
ThinkPHP
Discuz
Yii
所有基于 PHP 语言写的框架都可以安装 PHP-Agent
7.兼容的扩展
bz2 | calendar | Core |
ctype | curl | date |
dom | ereg | exif |
fileinfo | filter | ftp |
gd | gettext | gmp |
hash | iconv | imap |
json | ldap | libxml |
mysql | mysqli | odbc |
openssl | pcntl | pcre |
PDO | pdo_mysql | PDO_ODBC |
pdo_sqlite | Phar | readline |
Reflection | session | shmop |
SimpleXML | pdo_mysql | sockets |
SPL | sqlite3 | standard |
tokenizer | wddx | xml |
xmlreader | xmlrpc | xmlwriter |
xsl | zip | zlib |
功能
1.应用架构自动建模
下载探针并安装就绪后,平台会自动识别并加载服务器上的应用
总览全局性能
应用首页的应用性能总览,能够让你迅速感知应用的健康程度和总体性能状态与问题。以总览为入口,可以轻松追溯至地理信息、关键事务、错误统计等性能度量点,完成应用性能管理工作。在应用性能总览中,包括以下信息:响应时间,性能指数,吞吐量(单位:rpm 每分钟请求数),关键事务,错误率,近期事件,服务器信息
自动分析应用程序拓扑
Web 事务
慢事务追踪
2.代码级别的性能诊断
3.数据库
详情
慢 SQL 诊断
4.外部服务
5.后端监控
6.错误信息
7.报表
Web 事务
数据库
8.设置
服务器环境
自定义事务
9.关键事务
9.报警策略
报警策略可为应用程序,关键事务分别设置
设置方法如下
a.触发
性能指数
设置多少分钟内为 警示值
设置多少分钟内为 发送警报
错误率
设置多少百分的平均错误率在多少分钟内为 警示值
设置多少百分的平均错误率在多少分钟内为 发送警报
b.通知方式
邮件,短信,邮件+短信
c.分派
应用
设置具体哪些应用采用此策略
用户
设置具体哪些用户为此策略响应
告警集成
alert 说明-----此处需修改
报警记录
报警记录类别分为 通知、宕机、严重问题、告警问题
安装
1.获取授权编号
服务器会自动生成「License Key」授权编号
2.下载
从页面中下载 OneAPM PHP Agent
或使用 wget 在线获取安装包
3.安装
解压 Agent 安装包
tar -xzf OneAPM_php_Agent_latest.tar.gz
定位至「安装包所在路径」
cd oneapm-php5-linux-install-script
执行安装脚本
sudo ./oneapm-install
在提示输入「License Key」时,输入「License Key」
等待安装脚本执行。若出现以下信息,则安装成功。
OneAPM is now installed on your system. Congratulations!
4.重启
重启 Apache 或 php-fpm。
然后,稍等片刻,等待 OneAPM 接收 Agent 发送的数据。
查阅更多文档
定价
团队
其他产品
详悉错误报告
无论是私人数据中心,还是公共云,亦或是 Hybrid-Cloud,OneAPM 同样适用。
按照浏览器和地理信息 2 种分类方式,对真实用户的页面加载时间等性能数据进行查看,快速区隔出需要优化性能的浏览器类型和区域用户。
关键事务 Top 5,平均响应时间、吞吐量这些性能查看方式,帮助你快速定位性能瓶颈;事务的深度 Traces 记录,协助你完成应用性能管理从抽象到具象的追溯过程。
智能的报警机制,在性能瓶颈出现前,修复性能问题,防止性能问题导致用户流失。
深度追溯细节
OneAPM 提供整齐划一的界面,让你能够无障碍地完成从真实用户体验,到应用服务器,直至应用代码的端到端应用性能管理。
OneAPM 支持团队协助,能够帮助一个团队完成应用性能管理工作,包括:事务的深度性能剖析、浏览器 Traces 记录查看、关键事务性能分析、事务 Traces 记录查看。
为什么选择 OneAPM ?
OneAPM 是国内首家支持 PHP 的应用性能管理云解决方案,通过 Saas 向用户提供统一的入口、友好的界面、便捷的流程,来管理和监控应用程序的性能,并完成从前端、到网络、直至应用代码的端到端应用性能管理,让你随时随地变身运维专家。
OneAPM 面向开发者和中小型企业,无需企业级的花费,就可以达到企业级的应用性能管理效果。基础设施监控、多语言支持、真实用户体验监控、事务深度追溯和分析,使用 OneAPM 就可以帮你全部搞定 !
如何使用 APM 搞定 PHP 应用的性能优化?的更多相关文章
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)
前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...
- 教你怎么半天搞定Docker
首先,不要把docker想的那么高大,它不就是先做个镜像,然后通过docker像虚拟机一样跑起来嘛...docker其实在真实业务场景中还是非常有局限性的.Dockerfile脚本也没那么好写,有些应 ...
- 用ORM的思想操作XML文档,一个对象就搞定不要太简单。滚蛋吧!XmlDocument、XmlNode、Xml***……
大家有没有这样的感受,一涉及XML文档操作就得百度一遍.是不是非!常!烦!.各种类型,各种方法,更别提为了找到一个节点多费劲.本来想写个XML操作的工具方法,写了两行一想既然XML文档是有规律的,如果 ...
- JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)
前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打 ...
- 如何让两个div在同一行显示?一个float搞定
最近在学习div和css,遇到了一些问题也解决了很多以前以为很难搞定的问题.比如:如何让两个div显示在同一行呢?(不是用table表格,table对SE不太友好)其实,<div> 是一个 ...
- 3小时搞定一个简单的MIS系统案例Northwind,有视频、有源代码下载、有真相
一.瞎扯框架.架构 楼主自从1998年从C语言.MASM.Foxbase开始学计算机开始接触这个行当16年以来,2001年干第一份与程序.软件.然后是各种屌的东西开始,差不多干了13年了,这13年来, ...
- 前端实战Demo:一张图片搞定一页布局
对前端程序员来说,从设计师的手中拿过设计图和素材之后根据需要进行切图是必要的基本功,但是一般的程序员可能对切图并非那么熟悉,所以可能有很多时间都花在使用Photoshop上,那么这里就有一种方法可以减 ...
随机推荐
- update更新多行数据(oracle)
转自:http://blog.itpub.net/25322446/viewspace-767505 说明:笔记总结了在工作中遇到过的几种update方法和各种方法适用的范围. 1.单表更新方案:使用 ...
- VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Small-Footprint Configuration
什么是Small-footprint? Small-footprint常见关键配置? 如何配置Small-footprint? 什么是Small-footprint? Small-footprint配 ...
- DOM_节点层次_Document类型
一.Document类型 nodeType: 9; nodeName: "#document"; nodeValue: null; parentValue: null; owner ...
- FreeMarker-Built-ins for strings
http://freemarker.org/docs/ref_builtins_string.html Page Contents boolean cap_first capitalize chop_ ...
- Java+FlexPaper+swfTools 文档在线预览demo
1.概述 主要原理 1.通过第三方工具openoffice,将word.excel.ppt.txt等文件转换为pdf文件 2.通过swfTools将pdf文件转换成swf格式的文件 3.通过FlexP ...
- linux file命令小记
在linux中,所有东西都是文件:而且他并没有后缀名这一概念.Linux的扩展名没有太大的意义, file.tar.gz file.tgz file.tar.bz2 file.rar file.gz ...
- 关键字 const
如果关键字出现在星号左边,表示被指物是常量: 如果出现在星号右边,表示指针本身是常量: 如果出现在星号两边,表示被指物和指针都是常量. void f1(const Widget* pw); //f1和 ...
- ZigBee组网原理
Zigbee组建一个完整的网络包含两个步骤:网络初始化和节点加入网络.其中,节点加入网络可以分为通过协调器直接连接入网和通过已有父节点入网.下面来依次说明. 1. 网络初始化 ZigBee网络初始化只 ...
- PHP 魔术方法 __construct __destruct (一)
慢慢长寻夜,明月高空挂 __construct() - 在每次创建新对象时先调用此方法 __destruct() - 对象的所有引用都被删除或者当对象被显式销毁时执行 <?php /** * ...
- Qt5.4生成安装包过程
所需工具: 1. HM NIS Edit 2. windeployqt.exe 第一个工具需要自己去网上下载,第二个工具可以在qt安装目录下找到:D:\qtopengl\5.4\mingw491_ ...