Portál AbcLinuxu, 29. května 2024 06:42


Dotaz: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

11.4.2009 16:56 NOsmall
MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !
Přečteno: 959×
Odpovědět | Admin

Ahoj,

může mi někdo prosím poradit jaká opatření udělat nebo co mám obecně udělat aby mi nepadal MySQL server ? ..

 

Předpokládaný problém bude asi v zatížení serveru (proste asi po nem chci moc operaci najednou) .. ale server (stroj) to normal zvlada a procik se ani nehne ani ramky nijak neskacou a MYSQL server je ulozeny na raptoru..

Pokud budete chtit muzu sem postnout i muj config ..

 

Předem děkuji za jakoukoliv Vaši radu jsem v tomhle ohledu začátečník.

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.4.2009 17:29 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !
Odpovědět | | Sbalit | Link | Blokovat | Admin

Nemáš omezený počet připojení?

-- Nezdar není hanbou, hanbou je strach z pokusu.
11.4.2009 17:49 NOsmall
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

Ano to me taky napadlo avšak podle configu mam nastaveno az 500 pripojeni .. (mam sem config postnout ?)

otazkou je jestli to neni 500 ruznych pripojeni.

 

neni nějaký rozdíl mezi 500-sty různých připojení a 500-sty připojení z jednoho uživ. jména a hesla ?..

na vsechna pripojeni pouzivam jen jedno uziv jmeno a heslo ...

 

Jeste me napadlo nemuze byt chyba nekde jinde nez v MYSQL SERVERU? .  co třeba APACHE nebo PHP nemuze to být tim ? .. protože mi to píše že spojení nelze navázat pouze z přístupu z webu (tedy konektim se tam pres php scripty ..)

11.4.2009 21:52 nick
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

500 připojení za hodinu může být taky málo... zkus dát víc...
Ikdyž teď záleží na tom, jestli mysql opravdu spadne (-> musí se ručně spustit)
nebo proste odmítne připojení...
Pokud to druhé, může stačit navýšit limity.

11.4.2009 22:27 NOsmall
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

Díky za radu

vyzkousim a dam vam vedet jak to dopadlo ..

11.4.2009 22:54 NOsmall
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

nastavil sem 5000 a stejne to pada :-( probiha to nasledovne ..

 

Zatizim server + spustim  web script .. (možná je  poškozený aproto shazuje  přetěžuje mysql server nevim ale dříve to nědělalo ..) a napíše to chyba spojení přístupový práva mám nastaveny adminovský full . takze bych mel byt mimo jakekoliv limity ..

mysql databaze vzdy padne na nekolik sekund 2 - 6 sekund a pak to zase normal jede spise mi to prijde ze mi mysql server odepre pristup na nejakych 5 sekund za hromadny pripojeni nebo neco takoveho ..

 

zkousel jsem se tam v dobe toho vypadku (5-ti sekundoveho) pripojit pres SQLyog z domova a normal me to tam pustilo a nepsalo to nic o vypadku ..

zkousel jsem se lognout do mysql pres phpmyadmina a tam mi to psalo ze se nepodarilo pripojit k mysql serveru :-(

 

Je to cely nejaky zvvlastni driv mi to nic podobneho nedelalo .. ale ted po prechodu na 5.1 to dela porad :-(

12.4.2009 00:15 franta
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !
ses nejakej zmatenej...

kdybys sem pastnul primo to, co to vypsalo, tak udelas lip.
12.4.2009 08:54 NOsmall
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

Nejsem zmatenej :-) jen nevim jak mam problem spravne popsat aby mi mohl nekdo poradit ;-) MYSQL server není moje doména a ted jsem v háji :D ..

V zadnym logu mysql serveru nic o vypadku neni. MYSQL server se proste tvaří jako že nic, že je pořád ok a že nepadnul .. v logu neni o pádu ani ťuk..

blami avatar 12.4.2009 03:37 blami | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !
To zni jako problem PHP driveru (nejaka blbost v nastaveni MySQL v PHP). Radsi ani nechci vedet co za prasarny ten skript dela :o)
12.4.2009 09:10 NOsmall
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

To mě zajímá .. myslím si že to bude něco s natavenim web serveru .. bud APACHE nebo PHP ..

 

ohledne kodu nic silenyho to opravdu neni  - (snažim se neprasit) - kdyz ten SQL dotaz zadam primo do mysql konzole prikaz se provede a vse je ok, kdyz prikaz zadam do phpmyadmina prikaz se provede a zase vse jede normalne

.. pouziju php script který nedělá nic jiného než je to že do sql dotazu SELECT count(*) FROM `characters` WHERE account = '$acc[0]'; doplnuje za $acc[0] císla 1 až 10 000 .a pak jej provede ..

 

Jak jsi naznačil myslím že to bude problém někde v nastavení PHP .. poradiš mi co bych si měl zkontrolovat popřípadě na co si mám dát pozor ? ..

AraxoN avatar 12.4.2009 17:46 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

Ktorú PHP funkciu používaš na pripojenie ku MySQL - mysql_connect(), alebo mysql_pconnect() ?

Čo sa ďalej robí v tom skripte? Je to skript, ktorý sa vykoná rýchlo a hneď skončí, alebo trvá dlhšie?

blami avatar 12.4.2009 20:26 blami | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !
v php.ini (obvykle /etc/php5/php.ini nebo neco takoveho) je sekce tykajici se jednotlivych db driveru. Tam se daji nastavit veci jako pocet maximalne otevrenych persistentnich pripojeni atd. Jeste me napadlo, pokud pouzivate persistentni pripojeni, urcite si po vykonani skriptu uklidite a uvolnite ho, vidte?
12.4.2009 21:21 Martin S.
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

Napadá mě, že pokud tam provádíte těch 10000 dotazů, chvilku to trvá a tak dojde k timeoutu PHP skriptu a proto vidíte, že je to "zaseklé". To by vysvětlovalo i to, že když dotaz (jeden) vykonáte, vše je v pořádku, ale při tak velkém množství se to prostě nestihne.

Nešlo by sem vložit alespoň kousek toho skriptu s dotazem?

13.4.2009 07:22 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

A nešlo by místo 10 tisíc dotazů na počet řádků s určitou hodnotou použít jeden count ... group by...?

13.4.2009 09:00 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

A je na tom sloupci klíč?

13.4.2009 12:04 NOsmall
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

    function connect($db_host, $db_username, $db_password, $db_name = '', $use_names = '', $pconnect = false, $newlink = true) {

        global $lang_global;

        if ($pconnect) $this->link_id = @mysql_pconnect($db_host, $db_username, $db_password);
        else $this->link_id = @mysql_connect($db_host, $db_username, $db_password, $newlink);

        if ($this->link_id){
            if($db_name){
                if (@mysql_select_db($db_name, $this->link_id)) return $this->link_id;
                    else die(error($lang_global['err_sql_open_db']." ('$db_name')"));
                if (!empty($use_names)) $this->query("SET NAMES '$use_names'");
            }
        } else die(error($lang_global['err_sql_conn_db']));
    }

    function close(){
        global $tot_queries;
        $tot_queries += $this->num_queries;
        if ($this->link_id){
            if ($this->query_result) @mysql_free_result($this->query_result);
            return @mysql_close($this->link_id);
        } else return false;
    }

//accounts without chars or specified number of chars
case "num_of_char_in_acc":
 $sql->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']);

 $result = $sql->query("SELECT id FROM account WHERE gmlevel < $user_lvl");

 $acc_output_array = array();

 while($acc = $sql->fetch_row($result)){
    $total_chars_in_acc = 0;
    foreach ($characters_db as $db){
        $sql->connect($db['addr'], $db['user'], $db['pass'], $db['name']);

        $query = $sql->query("SELECT count(*) FROM `characters` WHERE account = '$acc[0]'");
        $total_chars_in_acc = $total_chars_in_acc + $sql->result($query, 0);
    }

 

Tohle jsou asi tak ty nejdulezitejsi casti kodu.

myslím že je to standartní postup .. 

Ohledne toho timeoutu v PHP zkousel jsem jej prenastavit na 60, i 90 sekund ale i tak po nejakych 5 až 6 vterinach script hodi chybu ze nebylo navazano spojeni s DB

Jak tu jiz nekdo psal mozna jsem omezeny na tech pocet pconnect.. zkusim se mrknout do nastaveni php.ini

 

AraxoN avatar 13.4.2009 12:37 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !
 foreach ($characters_db as $db){
        $sql->connect($db['addr'], $db['user'], $db['pass'], $db['name']);

        $query = $sql->query("SELECT count(*) FROM `characters` WHERE account = '$acc[0]'");
        $total_chars_in_acc = $total_chars_in_acc + $sql->result($query, 0);
    }

Človeče nešťastný - keď si pre každý ďalší dotaz vytvoríš nové spojenie, tak sa nediv, že sa zachvíľu minú.

Ty tam máš niečo ako: connect, query, connect, query, connect, query, ... - dookola, pričom pri každom "connect" sa vytvorí nové spojenie.

Správne to má byť: connect, query, query, query, ... - čiže používaš jedno spojenie.

Alebo prinajhoršom takto: connect, query, close, connect, query, close, connect, query, close, ... - čiže keď ideš spraviť nové spojenie, tak to staré po sebe predtým upraceš.

13.4.2009 13:50 NOsmall
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

Ajo toho jsem si nevsiml .. udajne to psal nejaky zkuseny programator :D a heleme se ona je tam chba .. zkusim scropt predelat .. a uvidíme ..

jenda se o část scriptu z web systemu pro herní server a kdyz tam proste tenhle cleanup pustim tak mi spadne celej web protoze semi nemuze nic pripojit do DB .. bohuzel to pada dosti casto .. zkusim cely ten web vypnout (odstavit)

uvidíme jestli padani serveru bude pokracovat ..

Díky.

AraxoN avatar 13.4.2009 14:31 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

On server nespadne, on len neprijíma ďalšie spojenia, lebo narazil na administrátorom určený limit počtu spojení.

13.4.2009 15:10 NOsmall
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

Ale pokud se pripojuji jako administrator tak pro me limity neplati nebo ano ? ..

14.4.2009 11:35 klingac | skóre: 10 | Praha
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

plati. ale MySQL si nechava vzdy este jeden "kanal" volny pre admina - ak server "vytuhne" v dosledku prilis vela pripojeni, tak admin sa tam stale dostane lebo ma ten jeden kanal vyhradeny len pre seba - potom moze vsetkych pozabijat a spravit poriadok. lenze ak tam z apliacie lezies ako root tak si aj tieto "zadne vratka" zatvoris

14.4.2009 13:16 Tomas
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

Takhle to dopadá když "programátoři" píší kód k přístupu k datům. Povolil bych jim přístup jen přes ORM aby nenadělali více škody jak užitku :-(. Nic si ztoho nedělejte: takové brzdy lze nalézt i v kdejakém "profi" (PL/SQL) kódu.

select count(*)
from account as A
join characters as C on A.id=C.account
WHERE A.gmlevel < $user_lvl
14.4.2009 13:23 l4m4
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !
Ano, pouze přístup přes ORM zajistí rovnou škodu pro všechny!
15.4.2009 12:32 Tomas
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

Máte samozřejmě pravdu. ;-) Určitě ale ORM nevytvoří takovou prasárnu, že by ve smyčce o několika desítkách či stovkách opakování bude otvírat nová spojení. Tyto základní věci jsou ve všech normálních ORM vychytané a místo řešení základních chyb se pak můžete věnovat řešení problémů na které implicitní kód z ORM nestačí.

okbob avatar 14.4.2009 15:10 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !

Bohatě by stačilo, kdyby se na ten kód podíval někdo, kdo o programování něco ví, a používá hlavu. Technologie jsou v tom nevinně - s blbostí se bojovat nedá.


20.4.2009 08:50 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !
Navíc, i při použití ORM tam pořád zůstane těch 9999 zbytečných dotazů.
20.4.2009 08:50 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: MySQL Server pretizen -> Pripojeni k MySQL serveru se nezdařilo !
Na druhou stranu: sice to bude pomalé a se serverem to pěkně zacvičí, ale alespoň to bude fungovat. To je také pozitivum.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.