Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: aigor.net 06. 05. 2024, 17:19:35

Název: PHP: pomalé připojení k MySQL
Přispěvatel: aigor.net 06. 05. 2024, 17:19:35
Ahoj, přepisuju jeden fousatý projekt z PHP 5 a MySQL (lib) do PHP8 a PDO.
Narazil jsem u toho na dost nepříjemný problém. Na několika místech se (kromě lokální DB) musím připojit i k sousednímu serveru a tam se kód vždy zasekne na 4sec. Původní projekt, nový projekt a i externí DB běží jako VM na jednom serveru.
Zkusil sem místo PDO použít MySQLi, ale se stejným výsledkem. Firewall mlčí, adresuju přes IP, user/login je bez změny, ale je to prakticky nepoužitelné.

Kód připojení kopíruje vzor z https://phpdelusions.net/pdo_examples/connect_to_mysql (https://phpdelusions.net/pdo_examples/connect_to_mysql)

Už nevím co vyzkoušet, nebo kde hledat. Všechno se tváří v pořádku, "jen" zoufale pomalé  :(
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: petersveter 06. 05. 2024, 17:33:06
4 sekundy je v ramci sveta db absolutne nemyslitelne obrovske cislo. jedine co ma napada ze by to mohlo byt je ze ta ziva db nema indexy a musi robit full scan na vsetkych moznych tabulkach s milionmi zaznamov a/alebo ma neskutocne malo ram alebo nejaky dojebany platnovy disk. inak to nedava ziaden zmysel. je dost mozne ze ten vps je naozaj na najhorsom moznom hw takze otestuj na nom disk, ram aj siet.
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: McFly 06. 05. 2024, 17:33:46
Původní projekt je rychlý a bez problémů?
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: redustin 06. 05. 2024, 17:53:22
A při ručním spuštění mysql klienta na stroji s PHP se klient k externímu mysql připojí ihned a rovnou lze dávat query, žádné čekání?
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: Filip Jirsák 06. 05. 2024, 18:02:01
Dělá to jen při navázání spojení s DB? Není tam nějaký problém s překladem DNS (že by se třeba nejprve zkoušelo připojení na jinou IP adresu nebo jiným IPv4/IPv6 protokolem)? Nedělá databáze nějaké zpětné ověření uživatele třeba přes Ident, nebo nepřekládá si IP adresu klienta na jméno? Nepokouší se tam navazovat šifrování přes TLS?
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: aigor.net 06. 05. 2024, 19:38:36
Tak popořadě. Připojení z původního kódu je samozřejmě rychlé jako blesk a tam sem nikdy nic speciálního neřešil. Na novém virtuálu je opět jen čistá terminálová instalace a PHP8 místo PHP5.
Ruční připojení do SQL si nejsem jist, zkusím zítra...
DNS překlady, nebo IPv6 celkem vylučuju, když adresu serveru zadávám jako IPv4. Nic jiného tam není - testuju i jen čistý kus kódu kde je připojení k DB a konec.
Reálně pořád běží oba virtuály - starý i nový, právě záseky v připojení ke třetí straně mě brání starou verzi odstavit, to by mě uživatelé utloukli.
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: to_je_jedno 06. 05. 2024, 20:04:53
jednou jsme takhle taky honila ducha. divnej byl prave v tom "pokazde presne x sekund + tech par desitek ms co to tvra obvykle".  jako programator nevim presne co to bylo, ale dle spravcu nejakej vosel spatne nakonfiguroval v server house svuj switch. Rozhodne to neni problem aplikacni, bude to neco v sitovani.
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: aigor.net 06. 05. 2024, 20:10:25
Přesně proto marně vymýšlím, jestli existuje nějaký "debug" místo 4sec koukání na prázdnou stránku.
V tomhle se neorientuju, tak žádné nástroje neznám. Je by mě zajímalo kde se to celou tu dobu poflakuje a co se tam děje...
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: Wasper 06. 05. 2024, 20:47:46
DNS překlady, nebo IPv6 celkem vylučuju, když adresu serveru zadávám jako IPv4. Nic jiného tam není - testuju i jen čistý kus kódu kde je připojení k DB a konec.
Pokud to není vypnuté na serveru, tak to SERVER resolvuje, aby matchoval to 'user'@'client' v právech.

Takže ověřit na něm, jestli funguje reverze klienta.
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: Jan Vondráček 07. 05. 2024, 07:16:33
Já bych navrhoval prozkoumat to pomocí tcpdumpu. Srovnat časy na obou serverech a pustit tcpdump na obou. Porovnání by mohlo vyloučit, že se jedná o síťový problém. Určitě zkusit cli klienta. Případně vytvořit novou prázdnou databázi a připojit se k ní. Bude to dělat dál?
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: Don.J 07. 05. 2024, 07:58:45
Tohle za mě vypadá na jednu z těchto možností:
- timeout nějakého novějšího protokolu který PDO zkouší, po timeoutu zkusí starší protokol. Co je za verzi MySQL na tom vzdáleném serveru? ... šifrování spojení apod.
- špatně nastavený "virtuální" switch/síťovka
- špatně nastavené IPv6 nebo IPv4, pokud se se serverem nespojí na IPv4 (padne timeout) zkusí IPv6 apod což by mohlo souviset s předchozím bodem.

Jak je nakonfigurovaná síť na Hypervizoru? Jdou data "ven" na fyzický switch a pak zpět nebo se switchuje na virtuálním a pak jdou data případně ven?
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: Pavel... 07. 05. 2024, 08:22:40
ked tak pozeram co sa tu pise, na mieste zakladatela vlakna by som asi hladal "ako zistit ako to komunikuje".
existuje nieco inteligentnejsie ako pouzit Wireshark? :)
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: aigor.net 07. 05. 2024, 08:32:06
Tohle za mě vypadá na jednu z těchto možností:
- timeout nějakého novějšího protokolu který PDO zkouší, po timeoutu zkusí starší protokol. Co je za verzi MySQL na tom vzdáleném serveru? ... šifrování spojení apod.

Tohle může být ono, MySQL je 5.0.67.
Dneska sem testoval i připojení z příkazové řádky a prodleva je tam také.
Bohužel do MySQL sáhnout nemůžu, je to součást další muzeální aplikace třetí strany, ze které čtu jen některá data.
Název: Re:PHP: pomalé připojení k MySQL
Přispěvatel: aigor.net 07. 05. 2024, 08:44:07
Pokud to není vypnuté na serveru, tak to SERVER resolvuje, aby matchoval to 'user'@'client' v právech.

Takže ověřit na něm, jestli funguje reverze klienta.

Máte pravdu! Pokusím se dokopat správce onoho serveru aby to vypnul a uvidím.