Szerző Téma: MYSQL hiba miatt 100%-os CPU használat és szerver fagyás!  (Megtekintve 2751 alkalommal)

MYSQL hiba miatt 100%-os CPU használat és szerver fagyás!
« Válasz #15 Dátum: 2011. December 08. - 23:57:14 »
0
Szerintem meg egy ciklussal van a baj.

MYSQL hiba miatt 100%-os CPU használat és szerver fagyás!
« Válasz #16 Dátum: 2011. December 09. - 15:00:05 »
0
Ha már ciklus sorozatban szerepel mysql_query akkor már régen rossz.
Nézd meg mi az utolsó bejegyzés mysql logban mikor a problémát tapasztalod elsõként.
Jha igen, éles szerveren ne használj semmilyen mysql_debug dolgot, csak olyan helyeken kapcsold be és rögtön ki ahol valami probléma lehetséges.

MYSQL hiba miatt 100%-os CPU használat és szerver fagyás!
« Válasz #17 Dátum: 2011. December 10. - 00:36:46 »
0
Arra rájöttünk, hogy az sql csak egy bizonyos felhasználószám felett akad ki. SQL log offolva van. 1 cikluson belül van query, de az elkerülhetetlen.

MYSQL hiba miatt 100%-os CPU használat és szerver fagyás!
« Válasz #18 Dátum: 2011. December 10. - 01:56:15 »
0
Pont az a ciklus miatt akadhat ki ahol a mysql_query van.
Minél többen vannak a szerveren annál többször kerül meghívásra az a bizonyos mysql_query rövid idõn belül.
Ha bemásolod a kódot biztos lesz jobb ötlet annak megoldására.

MYSQL hiba miatt 100%-os CPU használat és szerver fagyás!
« Válasz #19 Dátum: 2011. December 11. - 17:39:03 »
0
inkább leírom röviden, tömören mi a probléma, és hogy hogyan épül fel a rendszer.
Régebben is ugyan ez a fajta kifagyásunk volt, ami annyit tesz hogy egy bizonyos idõn belül rengeteg sok incomming connection-t jelez a log a játékosok neveivel, és IP -jével. Ekkor a szerver nem állt le, hanem futott azzal a játékosszámmal ami a fagyás elõtt volt, de nem lehetett fellépni a szerverre, sõt a szervergépnek a processzorát is 100% -ra terhelte. Ekkoriban írtunk egy segélykérõ topicot a hivatalos fórumra ( http://forum.sa-mp.com/showthread.php?t=294180 ). Itt összehordtak pár baromságot, viszont többen is írták hogy próbáljuk átírni a mysql rendszerünket multi-thread használatával. Ezt eleinte elleneztem, ugyanis elég hatalmas rendszerrõl van szó, továbbá rengetek sok visszatérõ értékes funckió is van (pl. GetVehilceOwner ) amit viszont nem lehet beletenni. (vagyis lehet, de külön-külön kellene mindig beírogatni). Ekkor megpróbálkozunk a MYSQL R6 plugint lecserélni a StrickenKid féle MySQL 2.1.1 -re. A rendszer stabilabb lett, viszont a kifagyás nem szûnt meg.
Ekkor olyan módszert alkalmaztam, miszerint 4db mysql kapcsolatot hozok létre. Elsõben az összes lehetséges lekérdezést átírtam multi-thread-ot használva. A másodikban a visszatérõ értékes lekérdezéseket tettem. A harmadikban a multi-threados ciklusos (loopos) lekérdezések vannak. (aminek több mint egy értéke van. pl. amikor a házak betöltését csinálja). A negyediben pedig ugyancsak a ciklusos lekérdetések vannak, de itt a visszatérõ értékesek. (ebbõl csak pár db van).
A rendszer gyorsabb, viszont a fagyás ismételten elõfordul. Egyedül az változott hogy a fagyás után nem fagy be a szerver a 100% -os processzorhasználattal, hanem simán leáll.
Mielõtt valaki félreértené, a ciklusos lekérdetések alatt nem arra gondolok hogy van egy ciklus, és abban van mysql_query meghívva, hanem amikor több adatról van szó, akkor ciklussal megy végig az egészen.
pl..
[pawn]
        new temp[256], id, Float:x, Float:y, Float:z;
mysql_query(\"SELECT `id`, `x`, `y`, `z` FROM `houses`\");
mysql_store_result();
while ( mysql_fetch_row(temp,\"|\") )
{
                sscanf(temp,\"p<|>ifff\",id, x, y, z);
   CreateHouse(id, x, y, z);
}
mysql_free_result();
[/pawn]
« Utoljára szerkesztve: 2011. December 11. - 18:20:40 írta Kr0tcHy »

MYSQL hiba miatt 100%-os CPU használat és szerver fagyás!
« Válasz #20 Dátum: 2011. December 11. - 18:16:14 »
0
Szerintem mindenféleképpen kellene egy mysql_debug logot készítenetek és megnézni melyikek az utolsó mysql adatcserék, mikor a fagyás bekövetkezik. (sajnos ez plusz leterhelés lesz a szervernek de hát hiba keresés erejéig miért is ne?   :D  (Hallottam már pár GB-os debug .txt fájlról.    :D)
Tegyétek be Zeex crashdetect pluginját, hátha jelezne valami hibát. ( A leállásnak oka van, valahogy nyerni kell információt a körülményeirõl, ha javítani akarjátok.)
Másik ötletem még az lenne hogy, szedjetek le valami mysql-es gamemódot és megnézni annál is jelentkezik-e valami hasonló probléma.

MYSQL hiba miatt 100%-os CPU használat és szerver fagyás!
« Válasz #21 Dátum: 2011. December 11. - 18:29:08 »
0
próbáltuk már mind2-õt. egyik sem jelzett semmit.

MYSQL hiba miatt 100%-os CPU használat és szerver fagyás!
« Válasz #22 Dátum: 2011. December 11. - 18:46:51 »
0
Még egy ötlet közben, próbáljatok meg másik hostot ideiglenesen ott is jelentkezik-e a probléma.
Minél több infót szereztek a fagyás/crash pillanatáról annál közelebb kerültök a hiba elhárításához.
A crashdetect pluginhoz másképp kell elkészíteni az .amx fájlokat hogy hasznosabb információt tudjon visszaadni. ( -d2  or   -d3 )
Mivel a módot senki mással nem akarjátok megosztani ezt innentõl kezdve nektek kell megoldani, véleményem szerint amiket eddig írtak nektek annál többet senki se fog tudni írni.

MYSQL hiba miatt 100%-os CPU használat és szerver fagyás!
« Válasz #23 Dátum: 2011. December 12. - 07:02:35 »
0
pontosan tudom hogyan kell lefordítani a crachdetecthez a módot, azért köszi :)
Most egyenlõre a foreach -re gyanakszok, most ugyanis 2x is úgy fagyott ki a szerver hogy utolsó használt parancsban csak az szerepel.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal