Nette Framework – rychlost generovania stranky

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Takeshi
Člen | 596
+
0
-

Zdravim,

co by ste urobili/zmenili keby ste chceli co najpresnejsie zaznamenat rychlost generovania stranky. (Nevyznam sa) len hadam: vypnut niektore prebytocne funkcie .. (napriklad DebugBar) alebo ine nastavenia bez ktorych by sa stranka obysla … (neviem ci ten Debug bar spomali (aj ked minimalne) stranku)

bojovyletoun
Člen | 667
+
0
-

Odpověď nebude krátká. Záleží taky, zda na rychlosti záleží vždy nebo jen na produkčním servru(pak některé problémy odpadnou). Lze to rozdělit na 3 skupiny(nejvíc asi bude zajímat ty poslední). Taky říkám, že poznatky platí pro můj PC (Apache 2.4, Win7, PHP 5.2,5.3,5.4).

  • prohlížeč
    • zde pomůže vypnout zbytečné panely debugbaru, neboť když mám třeba zapnutý ContainerPanel, tak prohlížeč po stažení stránky ji o poznání (0.5s) vykresluje déle.
  • nette

    rozdíl mezi minifik verzí a normální: obecně bych řekl, že je důležité vyzkoušet v dané situaci obojí a pak to zhodnotit. Navíc čas v debugbaru se nemusí shodovat se skutečností, neboť v případě minif. verze se debugger inicializuje až po načtení celého 1MB souboru nette.min.php a následné Debugger::init.

  • PHP
    • php open_basedir! je li aktivní, brutálně zpomalí načítání velkého množstí souborů a to až na sekundy. A vypnutý basedir znamená, že operace se soubory nejsou omezené! Na to pozor.
    • načtený((nemluvě o zapnutém)) modul xdebug Debugger zpomaluje o běh scriptu o nějaká procenta
    • opcode cache snižují podstatně čas. Př Wincache odhadem na polovinu. Občas je ale problém najít správnou verzi (jinak tě čekají nejruznější pády a chybové hlášky) a zprovoznit ji
  • server
    • já mohu mluvit pouze za apache.
    • roli hraje taky použítí modulu/(fast(CGI). Opět bych nerad něco konkrétního, je třeba to vyzkoušet.
    • záleží i na zatíženosti serveru. Věci se budou mít jinak na ostrém serveru s návštěvností než na
    • konfigurace Apache. ZDe jsou některá moje nastavení
    • ještě jedna věc- přidat do hosts localhosta

    domácí testťáku.

#HostnameLookups On
UseCanonicalName Off
#slow
ServerRoot c:/web
#KeepAlive Off
#KeepAliveTimeout 2
#EnableMMAP off
#EnableSendfile off
AcceptFilter http none
# v minulých verzích Accepfilter se jmenuje Win32DisableAcceptEx

To je zatím vše ,co mě napadlo.
PS: jako benchmark používám Kdyby sandbox, který se načte nejrychleji za 100ms, nejpomaleji

  • Nette se snaží právě pro tento případ použít $_SERVER[REQUEST_TIME_FLOAT], ale určitě ně vždy je definováné.
Takeshi
Člen | 596
+
0
-

bojovyletoun napsal(a):

Dakujem za rozsiahlu odpoved. Mam jednu otazku, ktora suvisi s Nette len okrajovo …

Su vytvorene rozsiahle stranky (jedna stranka v roznych jazykoch) (pre nejake firmy) .. povedzme ze jena je vytvorena v Nette, druha v cistom PHP a tretia v inom frameworku. Ako najobjektivnejsie merat ich rychlost

Editoval Takeshi (13. 6. 2012 19:43)

bojovyletoun
Člen | 667
+
0
-

Nějaký specializovaný benchmark. Ale takovýhle věci jsem nikdy nezkoušel. Jeden z nich je ab.exe v balíku apache…
dnes jsem při hledání něčeho jiného narazil na toto týkající se ab

PS OT: hned jsem si všiml podobnosti ikony memoryloadu v debugbaru a ikony v patičce pod článkem.

Editoval bojovyletoun (13. 6. 2012 19:59)

Takeshi
Člen | 596
+
0
-

bojovyletoun napsal(a):

neviem ako sa dostanem k tej aplikacii ab.exe

Opravte ma ak sa mylim, pripadne doplnte … pre co najobjektovnejsie meranie rychlosti generovania webstranky v roznych jazykoch by som urobil nasledovne:
Napriklad: …
→ vypnut vsetky vedlajsie funkcie, tkore ostatne jazyky nemaju (Nette ma naviac napriklad DebugBar, kotry je mozne vypnut v Bootstrap.php pridanim Nette\Diagnostics\Debugger::$bar = null;)
→ zalezi aj na tom ako su pisane funkcie (kolko maju medzier, komentarov) ⇒ z nette stranky som vycital, ze minifikovana verzia je iba ochudobnena o medzeri a komentare) a je teda o cosi mensi
→ … dalej ma zatial nic viac nenapada

Editoval Takeshi (13. 6. 2012 20:21)

Jan Tvrdík
Nette guru | 2595
+
0
-

Takeshi wrote:
z nette stranky som vycital, ze minifikovana verzia je iba ochudobnena o medzeri a komentare

To je spíš drobnost. Z hlediska výkonu je podstatné především to, že je to celé v jednom souboru.

Takeshi
Člen | 596
+
0
-

Jan Tvrdík napsal(a):

No ale ten subor ma istu velkost a to moze brzdit rychlost … (len uvazujem)… ci asi len tak minimalne, ze sa to neoplati spominat, ze? :-)

Editoval Takeshi (13. 6. 2012 20:50)

Filip Procházka
Moderator | 4668
+
0
-

@Takeshi: daleko víc tě zbrzdí načítání desítek souborů, než jednoho velkého. Navíc pokud máš nějakou opcode cache na serveru, tak se to načítá prakticky jen jednou.

Patrik Votoček
Člen | 2221
+
0
-

někde jsem viděl test a paradoxně v případě opcode je rychlejší více malých souborů než jeden velký.