管理绩效
管理绩效
过早的优化是万恶之源。
也许你以前已经读过这个报价。但是我喜欢引用完整:
说,我们应该忘记小效率约97%的时间:过早的优化是万恶之源。然而我们不应该放弃我们的机会,关键的3%。
—Donald Knuth
即使很小的性能改进可以发挥作用,尤其是对电子商务网站。现在留言板程序已经准备就绪,让我们来看看我们可以检查它的性能。
发现性能优化的最佳方法是使用分析器。现在最受欢迎的选择黑焰(完整的免责声明:我也黑焰项目)的创始人。
介绍黑焰
黑焰是由几个部分组成:
- 一个客户端触发配置文件(黑焰CLI工具或Google Chrome浏览器扩展或Firefox);
- 一个代理准备和聚合数据在发送之前他们黑焰。输入输出显示;
- (一个PHP扩展探针),仪器PHP代码。
与黑焰,你首先需要报名。
在你的本地机器上安装黑焰通过运行以下快速安装脚本:
1
美元curl https://installer.blackfire.io/installer。上海| bash
这个安装程序下载并安装黑焰CLI的工具。
完成后,安装PHP探针在所有可用的PHP版本:
1
美元sudo黑焰php:安装
我们的项目和启用PHP探针:
1 2 3 4 5 6 7 8 9 10
- - - a / php . ini+ + + b / php . ini@@ 7 3 + 7 7 @@会话。use_strict_mode = realpath_cache_ttl = 3600 zend.detect_unicode =关闭xdebug.file_link_format = vscode: / /文件/ % f: % l++(黑焰)+ # php_blackfire使用。dll在Windows上+扩展= blackfire.so
重新启动web服务器,因此PHP可以加载黑焰:
1 2
美元ob娱乐下载symfony服务器:停止美元ob娱乐下载symfony服务器:开始- d
黑焰CLI工具需要配置你的个人客户端凭据(存储您的项目配置文件在你的个人账户)。发现他们的顶部设置/凭证
页面通过替换占位符,执行以下命令:
1
美元黑焰客户:配置——客户机id = xxx client-token = xxx
码头工人设置黑焰剂
黑焰代理服务已经在码头工人组成堆栈配置:
与服务器通信,需要得到你的个人服务器凭证(这些凭证确定要存储配置文件,您可以创建一个每个项目);他们可以找到的底部设置/凭证
页面。将其存储为秘密:
1 2 3 4
美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_ID# xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_TOKEN# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
现在可以启动新的容器:
1 2
美元docker-compose停止美元docker-compose了-
修复安装非工作黑焰
如果你得到一个错误分析,增加黑焰日志级别日志中获得更多的信息:
1 2 3 4 5 6 7
- - - a / php . ini+ + + b / php . ini@@ -10 3 + 10 4 @@ zend.detect_unicode =[黑焰]# php_blackfire使用。= blackfire.so dll Windows上的扩展+ blackfire.log_level = 4
重新启动web服务器:
1 2
美元ob娱乐下载symfony服务器:停止美元ob娱乐下载symfony服务器:开始- d
和尾日志:
1
美元ob娱乐下载symfony服务器:日志
配置文件,检查日志输出。
配置黑焰在生产
黑焰是默认包含在所有平台。上海项目。
设置服务器凭证,生产秘密:
1 2 3 4
美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_ID - env =刺激# xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_TOKEN - env =刺激# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
启用了PHP探测器已经和其他需要PHP扩展:
为黑焰配置清漆
您可以部署开始分析之前,您需要一种方法来绕过清漆HTTP缓存。如果不是,黑焰不会撞到PHP应用程序中。你要授权的绕过清漆只分析请求来自本地机器。
找到你的当前IP地址:
1
美元curl https://ifconfig.me/
并使用它配置清漆:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31
- - - / .platform / config.vcl+ + + b / .platform / config.vcl11 @@ @@ 1、3 + 1+ acl配置文件{+ #授权当地的IP地址(取代IP发现上面)+“192.168.0.1”;+ #授权黑焰服务器+“46.51.168.2”;+“54.75.240.245”;+}+将调用vcl_recv{接头设置要求。backend_hint = application.backend ();设置req.http。Surrogate-Capability =“abc = ESI / 1.0”;@@ 8 6 + 16 16 @@将调用vcl_recv{}返回子(清洗);}++ #不要概要ESI请求+如果(req.esi_level > 0) {+未凝结req.http.X-Blackfire-Query;+}++ #旁路清漆当这个概要文件请求来自一个已知的IP+如果(req.http。X-Blackfire-Query & &客户端。ip ~) {+返回(通过);+}子vcl_backend_response} {
你现在可以部署。
分析Web页面
你可以从Firefox配置传统网页或通过他们的Google Chrome专用的扩展。
在你的本地机器上,别忘了禁用HTTP缓存配置/包/ framework.yaml
当分析:如果不是,您将配置文件Symfony HTTP缓存层而不是您自己的代码。ob娱乐下载
来更好地了解应用程序的性能的产品,您还应该配置文件“生产”环境。默认情况下,您的本地环境使用“发展”环境,增加相当大的开销(主要是收集数据的web调试工具栏和Symfony分析器)。ob娱乐下载
请注意
当我们将概要文件“生产”环境中,没有什么可以改变在Symfony的配置我们启用HTTP缓存层只有在前一章对“发展”环境。ob娱乐下载
交换你的本地机器上生产环境可以通过更改完成APP_ENV
的环境变量.env.local
文件:
1
APP_ENV =刺激
或者你可以使用服务器:刺激
命令:
1
美元ob娱乐下载symfony服务器:刺激
别忘了把它回到dev剖析会话结束时:
1
美元ob娱乐下载symfony服务器:刺激——
分析API的资源
分析API或水疗更好在CLI通过黑焰CLI的工具,你先前已经安装了:
1
美元黑焰旋度的symfony varob娱乐下载:出口ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL被
的黑焰旋度
命令接受相同的参数和选项旋度。
比较性能
在关于“缓存”的步骤,我们添加了一个缓存层来提高代码的性能,但我们没有检查和测量性能的影响变化。我们都非常不善于猜测什么是快是慢,你可能最终的情况做一些优化实际上使您的应用程序慢。
你应该测量的影响你做任何优化分析器。由于其黑焰使其视觉上容易比较功能。
写黑盒功能测试
我们已经看到了如何编写功能测试用Symfony。ob娱乐下载黑焰可以用来写浏览场景,可以根据需要通过运行黑焰的球员。让我们写一个场景,通过电子邮件提交一个新的评论并验证它链接在开发中,并通过管理生产。
创建一个.blackfire.yaml
文件包含以下内容:
下载黑焰的球员能够在本地运行的场景:
1 2
美元curl https://get.blackfire.io/blackfire-player.phar -OLsS美元chmod + x blackfire-player.phar
运行这个场景的开发:
1
美元/ blackfire-player。phar运行——端点= ' symfonyob娱乐下载 var:出口ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL .blackfire。yaml——变量“webmail_url =ob娱乐下载 symfony var:出口MAILER_WEB_URL 2 > / dev / null '”——变量=“env = dev”vv
1
美元rm blackfire-player.phar
或在生产中:
1
美元/ blackfire-player。phar运行——端点= ' symfonyob娱乐下载云:ob直播appenv: url——管——主要的.blackfire。yaml——变量“webmail_url =没有”——变量=“env =刺激”vv
黑焰场景还可以为每个请求触发配置文件和运行性能测试通过添加——黑焰
国旗。