Pomalé načítání databáze 'localhost'
- Michal Kumžák
- Člen | 107
Dneska a včera jsem několik hodin zjišťoval, proč mi na lokále nette načítá stránku přes 2 sekundy. Nakonec jsem se dostal až k tomu, že 2s trvá první SQL dotaz a bylo jedno co to bylo za dotaz. Nakonec stačilo v configu v konektoru do db vyměnit localhost za 127.0.0.1 a ta dvousekundová prodleva zmizela. Tak třeba to někomu pomůže.
Michal

- kminekmatej
- Generous Backer | 43
Změnou z localhost na IP adresu docílíš toho že se klient k databázi nepřipojí přes socket file ale přes IP:PORT. Což je obecně považování za naopak pomalejší způsob připojení.
Nejpravděpodobnější příčinu toho co popisuješ bych spíš hledal v souborové vrstvě – něco blokuje otevření socket file (/run/mysqld/mysqld.sock obvykle)

- m.brecher
- Generous Backer | 928
Na Windows jsem změřil TCP connect na MySQL přes localhost a 127.0.0.1. Opakovaná měření ukázala hodnoty:
- 127.0.0.1 cca 0,2–0,4 ms
- localhost cca 0,35–0,7 ms
Rozdíl existuje, ale jedná se o desetiny milisekund, nikoliv o sekundy. Pátral bych na konkrétní mašině.
Editoval m.brecher (16. 8. 22:54)
- David Grudl
- founder | 8324
localhost se na Windows překládá přes getaddrinfo() a vrací jako první
::1, tedy IPv6. Ale MySQL/MariaDB má často
bind-address = 127.0.0.1, takže na IPv6 loopbacku vůbec
neposlouchá. Klient tedy nejdřív zkusí ::1, čeká na timeout,
a teprve pak se vrátí k IPv4. Ta prodleva bývá kolem sekundy. Když
napíšeš 127.0.0.1, přeskočíš jak resolving, tak celý ten
neúspěšný IPv6 pokus.