Gestire le prestazioni
Gestire le prestazioni
L 'ottimizzazione prematura e la radice di合唱我马里。
可能avrete吉尔雷托,citazione precedenza,马vorrei riportarla每intero:
如果dovrebbero tralasciare le micro-ottimizzazioni diciamo il 97%左右delle回:l 'ottimizzazione prematura e la radice di合唱我马里。Tuttavia,非dovremmo tralasciare l 'opportunita di critico嘧啶醇3%。
—Donald Knuth
传递piccoli miglioramenti delle prestazioni possono票价la differenza specialmente /我斯迪电子商务。奥拉切l 'applicazione留言板e pronta每il debutto vediamo来possiamo verficarne prestazioni。
Il modo米利每scovare定性ottimizzazioni sulle prestazioni potremmo e di utilizzare quello联合国分析器。L 'opzione稍意大利半岛义大利d 'oggi e黑焰(免责声明:我就是传递il fondatore del progetto黑焰)。
Introduzione一黑焰
黑焰e composto da更合适的婚姻对象:
- 联合国客户端格瓦拉attiva我profili (lo strumento CLI di黑焰o联合国'estensione del每Google Chrome浏览器o Firefox);
- 联合国代理格瓦拉prepara e了aggrega我蒂的di inviarli黑焰。io / la visualizzazione;
- 联合国'estensione PHP (detta探针)切fornisce istruzioni al PHP配置。
每lavorare反对黑焰e necessarioiscriversi。
Installare黑焰南计算机语言环境eseguendo il seguente脚本di installazione rapida:
1
美元curl https://installer.blackfire.io/installer。上海| bash
Questo programma di installazione scarica ed设施la CLI di黑焰。
Una volta脂肪,installiamo l 'estensione PHP探测苏tutte le versioni PHP disponibili:
1
美元sudo黑焰php:安装
l E attiva 'estensione探针di PHP / il progetto:
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
Riavviare il服务器web在modo格瓦拉PHP possa caricare黑焰:
1 2
美元ob娱乐下载symfony服务器:停止美元ob娱乐下载symfony服务器:开始- d
La CLI di黑焰va configurata inserendo credenziali德尔客户端(每memorizzare我profili一些progetti音调甚il proprio账户)。如果trovano所以nella杰克逊superiore德拉pagina设置/凭证
。Eseguire篇il seguente第一,sostituendo我segnaposto:
1
美元黑焰客户:配置——客户机id = xxx client-token = xxx
Impostazione戴尔经纪人迪苏黑焰码头工人
Il servizio代理e di黑焰gia stato configurato nello堆栈di码头工人组成:
每comunicare con il服务器,e necessario ottenere credenziali德尔服务器(人们credenziali indicano鸽子si desidera memorizzare我profili e possono essere personalizzate每singolo progetto);如果在洋底trovano真主安拉pagina设置/凭证
。Memorizzarle联合国文件区域.env.local
:
1 2 3 4
美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_ID# xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_TOKEN# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
一个questo punto e相信lanciare il诺沃容器:
1 2
美元docker-compose停止美元docker-compose了-
Sistemare联合国'installazione di黑焰非funzionante
Se si riscontra联合国使杜兰特拉profilazione aumentare il livello一些日志di黑焰每ottenere maggiori informazioni:
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
Riavviare il服务器网络:
1 2
美元ob娱乐下载symfony服务器:停止美元ob娱乐下载symfony服务器:开始- d
Ed eseguire联合国尾巴隋日志:
1
美元ob娱乐下载symfony服务器:日志
Eseguire nuovamente la profilazione e controllare l 'output del日志。
在produzione Configurazione di黑焰
黑焰e di incluso违约合唱我progetti Platform.sh。
Imposta le credenziali▽服务器来购自迪生产:
1 2 3 4
美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_ID - env =刺激# xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx美元ob娱乐下载symfony控制台的秘密:集BLACKFIRE_SERVER_TOKEN - env =刺激# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
L 'estensione PHP探针e gia abilitata来ogni是estensione PHP necessaria:
每个黑焰Configurazione di清漆
波特的di eseguire il部署/ iniziare la profilazione e necessario联合国modo每aggirare la缓存HTTP di清漆。在卡索相反,黑焰非arrivera mai 'applicazione PHP。Autorizzeremo独奏le richieste di profilazione provenienti dalla macchina地区。
Trovare il proprio indirizzo IP:
1
美元curl https://ifconfig.me/
E usarlo每configurare清漆:
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} {
奥拉e相信eseguire il部署。
Profilazione delle pagine网络
E相信profilare le pagine web tradizionali哒Firefox阿哒Google Chrome tramite rispettiveestensioni奉献。
苏拉macchina场所,非dimenticare di disabilitare la缓存HTTP配置/包/ framework.yaml
杜兰特拉profilazione:卡索相反,我们profilato il livello di缓存HTTP di Symfony invece del proprio自由配置。ob娱乐下载
每ottenere联合国方形住宅区米利delle prestazioni德拉固有层applicazione produzione, si dovrebbe profilare传递l 'ambiente“生产”。每impostazione predefinita l 'ambiente地区utilizza l 'ambiente“发展”,格瓦拉aggiunge联合国开销significativo(血管疾病每raccogliere达缇女士拉barra degli strumenti di调试e di Symfony il分析器)。ob娱乐下载
请注意
Quando profileremo l 'ambiente“生产”,非ci莎拉nessuna configurazione da cambiare visto格瓦拉abbiamo abilitato il层di缓存HTTP独奏/ l 'ambiente“发展”在联合国capitolo precedente。
Il passaggio dalla macchina地区所有年青一代'ambiente di produzione essere脂肪cambiando la variabile d 'ambienteAPP_ENV
nel文件.env.local
:
1
APP_ENV =刺激
年青一代Oppure si usare第一服务器:刺激
:
1
美元ob娱乐下载symfony服务器:刺激
非dimentichiamo di tornare在dev quando la sessione di profilazione e terminata:
1
美元ob娱乐下载symfony服务器:刺激——
Profilazione delle risorse API
La profilazione delle API阿黛拉水疗viene fatta在modo米利南终端纤维tramite La CLI di黑焰,installata precedenza:
1
美元黑焰旋度的symfony varob娱乐下载:出口ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL被
Il第一黑焰旋度
accetta esattamente gli stessi parametri e di opzioni旋度。
Confronto delle prestazioni
Nel航道苏拉“缓存”,abbiamo aggiunto uno层每migliorare le prestazioni德尔自由配置di缓存,马非abbiamo controllato ne misurato l 'impatto sulle prestazioni di modifica故事。拿督切非我们是非常bravi内尔'indovinare科萨拉快速的e科e慢板,potremmo ritrovarci在崔una situazione eseguire qualche ottimizzazione仁德l 'applicazione稍lenta。
如果dovrebbe自始至终misurare l 'impatto di ogni ottimizzazione, usando联合国分析器。黑焰仁德il compito visivamente稍简单谢谢真主安拉安和苏阿funzionalita di confronto。
Scrivere funzionali迪蒂波黑盒测试
Abbiamo visto scrivere测试funzionali con Symfony。ob娱乐下载年青一代黑焰essere utilizzato scenari di / scrivere navigazione格瓦拉possono essere eseguiti苏richiesta tramite球员di黑焰。Scriviamo uno场景切invia联合国诺沃commento e lo convalida tramite联合国链接通过电子邮件在sviluppo e tramite联合国'interfaccia di amministrazione。
Creare联合国文件.blackfire.yaml
反对il seguente contenuto:
波特Scarichiamo il球员di黑焰每eseguire lo场景在语言环境:
1 2
美元curl https://get.blackfire.io/blackfire-player.phar -OLsS美元chmod + x blackfire-player.phar
在sviluppo Eseguire questo场景:
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
O produzione:
1
美元/ blackfire-player。phar运行——端点= ' symfonyob娱乐下载云:ob直播appenv: url——管——主要的.blackfire。yaml——变量“webmail_url =没有”——变量=“env =刺激”vv
scenari di Gli黑焰possono传递attivare profili每ogni richiesta ed eseguire测试sulle prestazioni aggiungendo l 'opzione——黑焰
。
Automatizzare我控制delle prestazioni
Gestire le prestazioni非significa独奏migliorare le prestazioni德尔自由配置esistente马传递verificare切非vengano introdotte regressioni。
年青一代Lo场景descritto所以nella sezione precedente essere eseguito automaticamente, regolare苏基地,在una attivita produzione di CI(持续集成)o。
苏的平台。sh, consente传递eseguire gli完美ogni volta切斯克雷亚联合国诺沃分支o si fa联合国produzione部署,每controllare automaticamente le prestazioni del诺沃自由配置。