Prestaties beheren
Prestaties beheren
Vroegtijdige optimalisaties zijn de wortel范het kwaad。
Misschien来我说citaat al eerder gelezen。低平火山口反向引用het graag volledig:
我们moeten kleine efficientieverbeteringen vergeten, zeg低平火山口97% van de tijd: voortijdige optimalisatie是wortel范阿莱kwaad。死是3托克mogen我们onze kansen procent不行voorbij变迟服务员。
—Donald Knuth
Zelfs kleine prestatieverbeteringen kunnen甚至verschil梅根,vooral voor电子商务网站。νde gastenboekapplicatie klaar voor黄金时间,变迟我们皇后区kijken锄de prestaties ervan kunnen controleren。
De beste许多om De prestaties te optimaliseren het gebruik van甚至是门分析器。德我展开optie tegenwoordig黑焰(volledige免责声明:本本土知识的书de oprichter van het黑焰项目)。
Introductie范黑焰
黑焰bestaat外的verschillende onderdelen:
- 即使客户端的死profielen activeert(反黑焰CLI-tool甚至browserextensie voor Google Chrome, Firefox);
- 即使代理死gegevens voorbereidt en verzamelt voordat泽naar黑焰。io沃顿gestuurd voor weergave;
- 即使PHP-extensie(反探针)死de php代码instrumenteert。
Om遇到黑焰te威尔,酩悦我eerst甚至解释这个词。
段黑焰op jouw lokale机门het volgende installatiescript外的te voeren:
1
美元curl https://installer.blackfire.io/installer。上海| bash
说installatieprogramma downloadt en installeert德黑焰CLI的工具。
Als说uitgevoerd wordt installeert het de PHP探针在阿莱beschikbare PHP versies:
1
美元sudo黑焰php:安装
活跃de PHP-probe voor ons项目:
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
Herstart de网络服务器zodat PHP黑焰菅直人拉登:
1 2
美元ob娱乐下载symfony服务器:停止美元ob娱乐下载symfony服务器:开始- d
德黑焰CLI工具酩悦沃顿geconfigureerd遇到jouw persoonlijke账户gegevens (om我projectprofielen op te slaan出席我persoonlijke账户)。我菅直人deze bovenaan de设置/凭证
paginavinden。到het volgende突击队外的om de plaatsvervangers te vullen:
1
美元黑焰客户:配置——客户机id = xxx client-token = xxx
Het opzetten van de黑焰代理op码头工人
德黑焰代理服务是芦苇geconfigureerd De码头工人组成堆栈:
Om遇到德服务器te kunnen communiceren,酩悦我jouw persoonlijke服务器河畔gegevens opvragen (deze gegevens判定waar我德profielen必opslaan——我菅直人er /项目甚至aanmaken);deze菅直人我onderaan de设置/凭证
paginavinden。Bewaar泽als geheimen:
1 2 3 4
美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_ID# xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_TOKEN# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
我菅直人νnieuwe容器lanceren:
1 2
美元docker-compose停止美元docker-compose了-
Herstellen van甚至niet-werkende黑焰installatie
Als我即使输出端krijgt tijdens het profileren, verhoog丹het黑焰logniveau om米尔informatie de日志中te krijgen:
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
Herstart de网络服务器:
1 2
美元ob娱乐下载symfony服务器:停止美元ob娱乐下载symfony服务器:开始- d
En volg de日志:
1
美元ob娱乐下载symfony服务器:日志
概要opnieuw en controleer de uitvoer van de日志。
黑焰在多彩的configureren
黑焰是standaard opgenomen阿莱的平台。sh projecten。
Zet德服务器inloggegevens op肌萎缩性侧索硬化症综合国力geheimen:
1 2 3 4
美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_ID - env =刺激# xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_TOKEN - env =刺激# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
De PHP探针芦苇geactiveerd op dezelfde许多als iedere安德利果汁benodigde PHP广泛:
清漆configureren voor黑焰
Voordat我菅直人starten profileren相遇,酩悦我甚至许多vinden om de清漆http缓存te omzeilen。佐薇不行,丹zal黑焰nooit de PHP-applicatie raken。我会alleen toestemming判定voor profielaanvragen模范我lokale机科曼。
Vind jouw huidige IP-adres:
1
美元curl https://ifconfig.me/
En gebruik het om清漆te configureren:
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} {
我菅直人νdeployen。
Webpagina的profileren
我菅直人traditionele webpagina van Firefox的Google Chrome profileren通过speciale extensies。
Vergeet op jouw lokale机不行om de HTTP缓存外的te schakelen配置/包/ framework.yaml
。佐薇不行,丹zal我德Symfony HTTPob娱乐下载缓存laag plaats范我profileren特征代码。
Om甚至打赌beeld te krijgen van de prestaties van jouw applicatie在综合国力,酩悦我的书甚至profiel aanmaken van de“productieomgeving”。Standaard maakt jouw lokale omgeving gebruik van de“ontwikkelomgeving”,死亡甚至aanzienlijke开销toevoegt (voornamelijk voor het verzamelen van gegevens voor de web调试工具栏在Symfony分析器)。ob娱乐下载
请注意
Aangezien我们德“综合国力”omgeving zullen profileren胡芬我们不行te wijzigen de configuratie omdat我们甚至vorig hoofdstuk de Symfony HTTP缓存laag enkel voor deob娱乐下载”ontwikkel omgeving hebben geactiveerd。
Het overschakelen van jouw lokale机naar de productieomgeving菅直人沃顿gedaan门德APP_ENV
在het omgevingsvariabele.env.local
bestand te wijzigen:
1
APP_ENV =刺激
我的kunt het服务器:刺激
突击队gebruiken:
1
美元ob娱乐下载symfony服务器:刺激
河畔Vergeet不行om het einde van jouw profileringssessie terug te schakelen naar开发:
1
美元ob娱乐下载symfony服务器:刺激——
API-resources profileren
Het profileren van de API的SPA菅直人打赌vanaf de CLI沃顿gedaan通过黑焰CLI工具死我eerder hebt geinstalleerd:
1
美元黑焰旋度的symfony varob娱乐下载:出口ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL被
Het黑焰旋度
突击队accepteert确切dezelfde argumenten en opties als旋度。
Prestaties vergelijken
在de堵塞“缓存”hebben我们甚至cache-laag toegevoegd om de prestaties van te verbeteren onze代码,低平火山口我们hebben de影响van de verandering op de prestaties不行gecontroleerd gemeten。Omdat我slecht菅直人的raden甚至aanpassing一切snel的净载体maakt,菅直人het zijn dat我输出端raad en我jouw applicatie juist langzamer maakt plaats van snel。
我邹altijd van de影响elke uitgevoerde optimalisatie moeten优美甚至分析器。黑焰maakt说visueel gemakkelijker dankzij devergelijkingsfunctie。
Het schrijven van functionele blackboxtesten
我们hebben gezien锄functionele测试kunnen schrijven Symfony会面。ob娱乐下载黑焰菅直人gebruikt沃顿om surf-scenario的te schrijven op verzoek通过德死去Blackfire-playerkunnen沃顿uitgevoerd。变迟我们甚至场景schrijven dat甚至nieuw commentaar indient en deze valideert通过德电子邮件链接通过德管理有效的发展。
Maak甚至.blackfire.yaml
河畔bestand遇到de volgende inhoud:
下载de Blackfire-player om het场景lokaal te kunnen uitvoeren:
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
Blackfire-scenario的kunnen显得profielen triggeren voor elke请求en prestatietests het toevoegen van de uitvoeren大门——黑焰
参数。
Automatiseren van performancecontroles
Het managen van de prestaties是不行alleen Het verbeteren van de prestaties van bestaande代码,低平火山口的书Het controleren er geen prestatie-regressies沃顿geintroduceerd。
Het场景dat de vorige paragraaf beschreven,菅直人automatisch沃顿uitgevoerd op的甚至连续Integration-workflow regelmatige效果的依据。
平台。sh maakt het mogelijk omde场景外的te voerenwanneer我甚至nieuwe分支maakt部署naar多彩的om de prestaties van de automatisch te controleren nieuwe代码。