Pomalé první načtení Nette

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

Zdravím,

při tvorbě aplikace na Nette (2.3.2) jsem narazil na jeden (pro mě dost zásadní) problém. Při spuštění stránky po nějaké době (v řádu hodin) vždy trvá velmi dlouho, než se stránka načte (přes 3000ms), dál už ale jede v pořádku. Mohl by mi někdo prosím poradit, jak tento problém vyřešit (v nějaké diskuzi jsem četl, že je to způsobeno RobotLoaderem, ale nikde jsem nezjistil, jak případně prodloužit jeho cachování).

Děkuji

Unlink
Člen | 298
+
0
-

A to na produkcii či vo vývojovom režime?

llook
Člen | 407
+
0
-

Nemyslím si, že to bude RobotLoaderem. Ten se rebuilduje až ve chvíli, kdy se pokusíš naloadovat třídu, kterou ještě nezná, tzn. když přidáš nový kód.

Tohle ani nemusí souviset s Nette, může to dělat třeba i webserver nebo databáze: https://wordpress.stackexchange.com/…s-slower-1-s

h4kuna
Backer | 740
+
0
-

U RobotLoadera záleží co prochází, úspěšně se zapotí když mu podstrčíš nějakou větší knihovnu, třeba Zend, mPdf něco jiného velkého, neprochází ti třeba vendor? Samozřejmě to je jen jedna možnost, jak píše @llook pak to může být servrem.

Editoval h4kuna (23. 6. 2015 7:07)

Firest
Člen | 12
+
0
-

Unlink napsal(a):

A to na produkcii či vo vývojovom režime?

Dělá to jak na produkci, tak ve vývoji.

Kromě základních věcí ve vendoru nic nemám (v podstatě jen to, co se vygeneruje v sandboxu).

Editoval Firest (23. 6. 2015 8:00)

Tomáš Kolinger
Člen | 136
+
0
-

On se problém řeší špatně, když nevíš, co ten problém vlastně je. Může to být spousta věcí a bez toho, aby si zjistil podrobnosti, můžeš jen hádat a zkoušet pokus/omyl, což není moc efektivní.

Takže doporučuju si na localu nainstalovat xdebug a zapnout profiler…

xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "cesta/k/logum"

Pak jen stačí tu situaci vyvolat a on se ti uloží log, co se volalo, jak dlouho, … Tyhle logy si můžeš prohlížet třeba přes webgrind. Z výstupu by si měl lehce vydedukovat na co se čeká či co zabírá tolik času a potom to můžeš dále řešit. Jen počítej s tím, že s profilerem to bude ještě pomalejší, což je normální, protože se ti generuje obrovskej log → zapínej profiler jen pokud to vysloveně potřebuješ.

Editoval Tomáš Kolinger (23. 6. 2015 8:38)

newPOPE
Člen | 648
+
0
-
  • mas tam cisty sandbox? (vyskusaj ho len pre istotu)
  • nemas nahodou vypnutu cache alebo nastavenu dumpcache?
  • neposiela sa tam mail alebo nevola nejaka externa sluzba? (google, facebook)
  • DB je na tej istej masine?
Firest
Člen | 12
+
0
-

Tomáš Kolinger napsal(a):

On se problém řeší špatně, když nevíš, co ten problém vlastně je. Může to být spousta věcí a bez toho, aby si zjistil podrobnosti, můžeš jen hádat a zkoušet pokus/omyl, což není moc efektivní.

Takže doporučuju si na localu nainstalovat xdebug a zapnout profiler…

xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "cesta/k/logum"

Pak jen stačí tu situaci vyvolat a on se ti uloží log, co se volalo, jak dlouho, … Tyhle logy si můžeš prohlížet třeba přes webgrind. Z výstupu by si měl lehce vydedukovat na co se čeká či co zabírá tolik času a potom to můžeš dále řešit. Jen počítej s tím, že s profilerem to bude ještě pomalejší, což je normální, protože se ti generuje obrovskej log → zapínej profiler jen pokud to vysloveně potřebuješ.

Díky, podle xdebugu je problém v připrojení k DB (Nette\Database\Connection->connect).

Unlink
Člen | 298
+
0
-

Tak s tým asi nič moc nespravíš, mne to viac menej robí tiež, pokiaľ po dlhšej dobe skúsim, tak tiež to trvá dlhšie a niekedy mi tracy ukazuje aj zo 5s na dotazoch.

Ide o to, že je potrebné vytvoriť spojenie k databáze, inicializovať nejaké veci…
takže ako hovorili ostatný, toto asi moc s nette nesúvisí.

Ale že sa to deje aj na produkcii je zvláštne.

llook
Člen | 407
+
0
-

Tak to vypadá na nějaké nastavení v my.cnf. Může to být třeba DNS lookup, který je by default zapnutý: https://dev.mysql.com/…t-cache.html

newPOPE
Člen | 648
+
0
-

@Firest skus sa este pohrat s hostom k DB, namiesto localhost (alebo co tam mas) tam vraz IPcku.

Firest
Člen | 12
+
0
-

llook napsal(a):

Tak to vypadá na nějaké nastavení v my.cnf. Může to být třeba DNS lookup, který je by default zapnutý: https://dev.mysql.com/…t-cache.html

Díky, kouknu na to.

newPOPE napsal(a):

@Firest skus sa este pohrat s hostom k DB, namiesto localhost (alebo co tam mas) tam vraz IPcku.

Na developu mám 127.0.0.1 a na produkčním mám taky IP, ale není v tom žádný rozdíl.