Prestaties beheren
Prestaties beheren
Vroegtijdige optimalaties zijn de wortel van het kwaad。
我爱你,我爱你。Maar ik citeer het graag volledig:
我们moeten kleine efficiëntieverbeteringen vergeten, zeg maar 97% van de tijd: voortijdige optimalisatie是de wortel van alle kwaad。Toch mogen we onze kansen in die kritische 3 procent niet voorbij laten gaan。
——唐纳德·克努特
Zelfs kleine prestatieverbeteringen kunnen een verschil maken, vooral voor电子商务网站。Nu de gastenboekapplicatie klaar是voor黄金时间,laten we eens kijken hoe we de prestaties ervan kunnen controleren。
最好的大厦是最理想的大门分析器.De meest populaire optie是tegenwoordig黑焰(volledige免责声明: ik ben ook de oprichter van het Blackfire项目)。
介绍货车黑火
黑火:
- 即使客户端die profielen activeert (de Blackfire CLI-tool of een browserextensie voor谷歌Chrome of Firefox);
- 即使代理黑火之死。IO worden手势voor weergave;
- 甚至PHP-extensie (de探针) php代码工具。
我遇到了黑火在werken, moet je eereen解释这个词.
安装程序Blackfire op jouw lokale机门het volgende installatiescript uit te voeren:
1
$Curl https://installer.blackfire.io/installer.sh | bash
点击installatieprogramma downloadt en installeert de Blackfire CLI Tool。
在所有定制的PHP版本中安装het de PHP probe:
1
$Sudo blackfire php:安装
Activeer de PHP-probe voor ons项目:
1 2 3 4 5 6 7 8 9 10
——/ php . ini+ + + b / php . ini@@ -7,3 +7,7 @@会话use_strict_mode=On realpath_cache_ttl=3600 zend.detect_unicode=Off xdebug.file_link_format=vscode://file/%f:%l . use_strict_mode=On realpath_cache_ttl=3600 zend.detect_unicode=Off++(黑焰)在Windows上使用php_blackfire.dll+扩展= blackfire.so
Herstart de webserver zodat PHP Blackfire kan laden:
1 2
$ob娱乐下载symfony服务器:停止$ob娱乐下载Symfony服务器:start -d
De Blackfire CLI Tool moet worden gconfigureerd meet jouw person like账户Gegevens (om je projectprofielen op te slan on je personal like account)。Je kan deze bovenaan de设置/凭证
paginavinden。Voer het volgende commando om de platatsvervangers in te vullen:
1
$Blackfire客户端:config——client-id=xxx——client-token=xxx
黑火特工,多克
De Blackfire代理服务是芦苇geconfigureerd在De Docker撰写堆栈:
我遇见的人不是我的朋友,而是我的朋友服务器Gegevens opvragen (deze Gegevens geeven aan waar je de profielen wilt opslaan—je kan er per project één aanmaken);Deze kan je onderaan de设置/凭证
paginavinden。Bewaar ze als geheimen:
1 2 3 4
$ob娱乐下载Symfony控制台的秘密:集BLACKFIRE_SERVER_ID# xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx$ob娱乐下载Symfony控制台的秘密:集BLACKFIRE_SERVER_TOKEN# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Je kan nu de nieuwe容器lanceren:
1 2
$docker-compose停止$Docker-compose up -d
赫斯特伦·范尼涅尔肯德·黑火装置
Als je een fout krijgt tijdens het profileren, verhoog dan het Blackfire logniveau om meer informatie in de logs te krijgen:
1 2 3 4 5 6 7
——/ php . ini+ + + b / php . ini@@ -10,3 +10,4 @@ zend.detect_unicode=关闭[blackfire] #使用php_blackfire.dll在Windows扩展=blackfire.so+ blackfire.log_level = 4
Herstart de webserver:
1 2
$ob娱乐下载symfony服务器:停止$ob娱乐下载Symfony服务器:start -d
环境日志:
1
$ob娱乐下载symfony服务器:日志
剖面仪opnieuw en控制器de uitvoer van de log。
产品配置中的黑火
Blackfire是alle Platform.sh项目中的标准opgenome。
Zet德服务器inloggegeevens op als综合国力geheimen:
1 2 3 4
$ob娱乐下载Symfony控制台的秘密:集BLACKFIRE_SERVER_ID - env =刺激# xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx$ob娱乐下载Symfony控制台的秘密:集BLACKFIRE_SERVER_TOKEN - env =刺激# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PHP探针是reeds geactiveerd, op dezelfde manier als iedere andere benodigde PHP extensie:
漆组态漆黑火漆
Voordat je kan startten met profileren, moet je een manier vinden om de Varnish HTTP-cache te omzeilen。Zo niet, dan zal Blackfire noit de php application raken。我将会继续在这里工作。
Vind jouw huidige ip地址:
1
$curl https://ifconfig.me/
En gebruik het om配置清漆:
12 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.vcl@@ -1,3 +1,11 @@+acl配置{+ #授权本地IP地址(替换为上面找到的IP)+“192.168.0.1”;授权Blackfire服务器+“46.51.168.2”;+“54.75.240.245”;+}+Sub vcl_recv {set req。Backend_hint = application.backend();设置req.http。代理能力= "abc=ESI/1.0";@@ -8,6 +16,16 @@ sub vcl_recv {} return(清除);}++ #不要分析ESI请求+ if (req.esi_level > 0) {+取消req.http.X-Blackfire-Query;+}++ #绕过清漆时,配置文件请求来自一个已知IP+ if (req.http。x - blackfire -查询&&客户端。IP ~配置文件){+ return (pass);+}} sub vcl_backend_response {
我看你的部署。
Webpagina的profileren
Je kan traditionele webpagina's van Firefox of谷歌Chrome profileren viaspeciale extensies.
Vergeet op jouw lokale machine niet om de HTTP cache uit te schakelen in配置/包/ framework.yaml
.Zo niet,但zal je de Symfob娱乐下载ony HTTP缓存laag在plaats van je特征代码profileren。
在生产方面的应用,在生产方面的应用,在生产方面的应用。标准maakt jouw lokale omgeving gebruik van de "ontwikkelomgeving", die een aanzienlijke overhead toevoegt (voornamelijk voor het verzamelen van gegevens voor de web调试工具栏en de Symfony profiler)。ob娱乐下载
请注意
Aangezien we de“productie”omullen profileren hoeven we niets te wijzigen in de configuratie, omdat we in even vorig hoofdstuk de Symfony Hob娱乐下载TTP cache laag enkel voor de“ontwikkel”omgeving hebben geactiveerd。
Het overschakelen van jouw lokale机器naar de productieomgeving kan worden gedaan door deAPP_ENV
Omgevingsvariabele in het.env.local
Bestand te wijzigen:
1
APP_ENV =刺激
耶昆特赫特服务器:刺激
突击队gebruiken:
1
$ob娱乐下载symfony服务器:刺激
Vergeet niet om aan heet einde van jouw profileringssessie terug te schakelen naar dev:
1
$ob娱乐下载Symfony服务器:prod -off
API-resources profileren
Het profileren van de API de SPA kan better vanaf de CLI worden gedaan via de Blackfire CLI Tool die je eerder hebt geïnstalleerd:
1
$Blackfire curl的sob娱乐下载ymfony var:出口ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL被
Het黑焰旋度
突击队员接受准确的选择旋度.
Prestaties vergelijken
在“缓存”中,我们甚至可以缓存到“缓存”到“缓存”到“缓存”到“缓存”到“缓存”到“缓存”到“缓存”到“缓存”到“缓存”到“缓存”到“缓存”到“缓存”到“缓存”到。Omdat je slecht kan raden of enaanpassing alles sneller of net trager maakt, kan het zijn dat je fout raad en je jouw applied juw langzamer maakt in platats van sneller。
Je zou altijd de impact van elke uitgeverde optimalisatie moeten meten met een profiler。黑火maakt dit visueel gemakkelijker dankzij devergelijkingsfunctie.
Het schrijven van functionele blackboxtesten
我们在功能测试中遇到了Symfony。ob娱乐下载黑火,在冲浪的场景下,我的手在那里Blackfire-playerKunnen worden uitgevoerd。后来,我们甚至场景schrijven dat甚至nieuw commentaar indient en deze valideert通过电子邮件链接在开发中通过de admin在生产中。
Maak甚至.blackfire.yaml
Bestand aan met de volgende inhoud:
下载de Blackfire-player om het scenario lokaal te kunnen uitvoeren:
1 2 3
$curl -OLsS https://get.blackfire.io/blackfire-player.phar$Chmod +x blackfire-player.phar$cp /home/fabien/Code/github/blackfireio / blackfire.io /播放器/ blackfire-player。phar blackfire-player.phar
Voer dit场景适用于开发:
1
$/ blackfire-player。运行——端点= ' symfony varob娱乐下载:出口ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL .blackfire。yaml——变量"webmail_url= ob娱乐下载' symfony var:export MAILER_WEB_URL 2>/dev/null ' "——变量=“env = dev”vv
产品的:
1
$/ blackfire-player。Phar run——endpoint= 'ob娱乐下载 sob直播appymfony cloud:env:url——pipe——primary ' .blackfire。yaml——变量“webmail_url =没有”——变量=“env =刺激”vv
“黑火”场景的触发和要求——黑焰
参数。
自动变速器性能控制
Het managen van de prestaties是niet alleen Het verbeteren van de prestaties van bestaande代码,maar ook Het controleren er geen prestatie-regressies worden geïntroduceerd。
在连续集成工作流程的生产管理基础上,上述章节中的场景是在连续集成工作流程中自动实现的。
平台。sh maakt het mogelijk omDe scenario’s uit te voerenWanneer je even nieuwe branch maakt of deployed naar productie om de prestaties van de nieuwe code automatich te controller。