Zadejte hledaný výraz...

MySQL server has gone away

Kamil Hurajt
verified
rating uzivatele
(8 hodnocení)
9. 9. 2012 23:21:28
Dobry den.
Mam problem s MySQL serverem s connectivitou ze vzdaleneho serveru.
Pri klasickych requestech je vse v poradku, no v pripade ze je tam casova odezva nejakou minutku.
Treba pri stahovani souboru. Tak je problem s MySQL a hned vyhodi tuto hlasku :
MySQL server has gone away
Po ukonceni stahovani potrebuji zapsat informaci o stazeni do mysql.
stazeni overim pomoci feof($soubor);
a po overeni vykonam prislusne akce k zapisu.
Prvotni data pred downloadem zapise bez problemu.
Testoval jsem to i na jednoduchem insertu se sleepem.
Pripojeni probiha na MySQL server z datoveho servru.
Nastaveni MySQL
posloucha verejne.
promenne:
net buffer length 16 384
net read timeout 72 000
net retry count 1 000
net write timeout 72 000
max allowed packet 134 217 728
Dekuji za rady.
---------- Příspěvek doplněn 09.09.2012 v 23:22 ----------
Skousel jsem take obnovit spojeni
Tady jhe napsana na to metoda:
9. 9. 2012 23:21:28
https://webtrh.cz/diskuse/mysql-server-has-gone-away/#reply806356
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
10. 9. 2012 00:24:48
No to se ti nepodaří vyřešit k uspokojení všech stran. Jestli tam máš skript, který něco z db generuje přes minutu, tak by to chtělo změnit nastavení limitů na MySQL. To je však současně nesmysl, protože ten limit je tam bezpečnostní pojistka. Snažil bych se to vyřešit jiným způsobem, tak aby tam tak dlouhé dotazy nebyly. Konkrétní radu mohu dát jen pokud budu vědět co je cílem přesouvání tak obsáhlého objemu dat, že to trvá minutu.
10. 9. 2012 00:24:48
https://webtrh.cz/diskuse/mysql-server-has-gone-away/#reply806355
martinzsa
verified
rating uzivatele
(1 hodnocení)
10. 9. 2012 07:08:11
nastavenie wait_timeout v mysql by malo pomoct
10. 9. 2012 07:08:11
https://webtrh.cz/diskuse/mysql-server-has-gone-away/#reply806354
Pokud nejsou servery ve stejném switchi, ale u různých providerů - pomůže OpenVPN a pustit provoz přes ni?
10. 9. 2012 07:14:58
https://webtrh.cz/diskuse/mysql-server-has-gone-away/#reply806353
Kamil Hurajt
verified
rating uzivatele
(8 hodnocení)
11. 9. 2012 07:29:56
Napsal Bedříšek;842485
No to se ti nepodaří vyřešit k uspokojení všech stran. Jestli tam máš skript, který něco z db generuje přes minutu, tak by to chtělo změnit nastavení limitů na MySQL. To je však současně nesmysl, protože ten limit je tam bezpečnostní pojistka. Snažil bych se to vyřešit jiným způsobem, tak aby tam tak dlouhé dotazy nebyly. Konkrétní radu mohu dát jen pokud budu vědět co je cílem přesouvání tak obsáhlého objemu dat, že to trvá minutu.
Bendrisek nejedna se o dlouhy dotaz.
Vyvsvetlim krokove:
Prijde uzivatel vyhleda si soubor - Vse OK
Najde soubor klikne na strazeni - Vse OK
Probehne stazeni - priblizne 2 minuty a tady po stazeni se spusti Update databaze a to hodi mysql gone away.
11. 9. 2012 07:29:56
https://webtrh.cz/diskuse/mysql-server-has-gone-away/#reply806352
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
11. 9. 2012 11:26:01
Napsal softdream;842984
Bendrisek nejedna se o dlouhy dotaz.
Vyvsvetlim krokove:
Prijde uzivatel vyhleda si soubor - Vse OK
Najde soubor klikne na strazeni - Vse OK
Probehne stazeni - priblizne 2 minuty a tady po stazeni se spusti Update databaze a to hodi mysql gone away.
marně přemýšlím jak souvisí stahování souboru s mysql.
ty máš v jednom souboru php (nebo v sérii nějakých php) konekt do db, servírování souboru z disku a příkaz update do db. je to tak? pokud ano, nešel by konekt do db udělat až po stažení? a pokud ne (např. proto, že potřebuješ ziskat z db informaci o souboru), tak nešlo by po prvním načtení informací z db, konekt ukončit, stáhnout soubor a pak znovu konekt do db otevřít? jsou to sice další transakční náklady navíc, ale při větší zátěži by jsi zase mohl vyčerpat počet otevřených konektů do db, kdyby jsi změnil limity čekání na nový příkaz v rámci jednoho vlákna.
11. 9. 2012 11:26:01
https://webtrh.cz/diskuse/mysql-server-has-gone-away/#reply806351
Kamil Hurajt
verified
rating uzivatele
(8 hodnocení)
11. 9. 2012 11:47:59
Napsal Bedříšek;843061
marně přemýšlím jak souvisí stahování souboru s mysql.
ty máš v jednom souboru php (nebo v sérii nějakých php) konekt do db, servírování souboru z disku a příkaz update do db. je to tak? pokud ano, nešel by konekt do db udělat až po stažení? a pokud ne (např. proto, že potřebuješ ziskat z db informaci o souboru), tak nešlo by po prvním načtení informací z db, konekt ukončit, stáhnout soubor a pak znovu konekt do db otevřít? jsou to sice další transakční náklady navíc, ale při větší zátěži by jsi zase mohl vyčerpat počet otevřených konektů do db, kdyby jsi změnil limity čekání na nový příkaz v rámci jednoho vlákna.
Aplikace je MVC
takze vse ma svoji logiku, a vramci jadra je i db connect;
Ktery se vola pomoci modelu atd
Priklad controller pro stazeni vypada takhle:
Vse co zacina pomoci Wc_ je model
11. 9. 2012 11:47:59
https://webtrh.cz/diskuse/mysql-server-has-gone-away/#reply806350
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
11. 9. 2012 11:59:44
Napsal softdream;843069
Aplikace je MVC
takze vse ma svoji logiku, a vramci jadra je i db connect;
Ktery se vola pomoci modelu atd
Priklad controller pro stazeni vypada takhle:
Vse co zacina pomoci Wc_ je model
Také děláme i nejjednodušší webovky jako MVC (posledních 8 let. je to rychlejší vývoj a když si zákazník vzpomene na nějakou fci, tak to nemusíme nějak složitě transformovat), ale to je celkem fuk jak to kdo dělá. Každý systém musí umožňovat explicitně ukončit stávající spojení s db a znovu jej otevřít a to je okamžik za if($download->isDownloaded())
{
Jak jsem psal prodloužení limitů nemusí být výhra, protože mohou při větší zátěži vybrat plný počet povolených konektů do db a aplikace spadne.
11. 9. 2012 11:59:44
https://webtrh.cz/diskuse/mysql-server-has-gone-away/#reply806349
Pro odpověď se přihlašte.
Přihlásit