mysql cpu korlat

udv,

tudja valaki,hogy lehet-e a mysql-nek CPU ido korlatot adni? Igazabol csak elkerulo megoldasokat talaltam a neten,amik a max. query merettel stb. operaltak.

Hozzászólások

processlistbol lovoldozd ki ami szerinted tul sokaig fut
mysqladmin processlist
mysqladmin kill

Hi!

Van valami processzorquota a kernelben, ha jól emlékszem userekhez lehet hozzárendelni. Szerintem ez valamelyest megfelelhet Neked.

FreeBSDn alapbol a limits paranccsal tudsz ilyet csinalni meg a /etc/login.conf-fal. Amugy a mysql.user tablat nezegesd meg abban is lehet mindenfele szepeket allitani ha baromagyu ugyfelrol van szo :)

átmenetileg megteheti a cpulimit progi...

Koszi a hozzaszolasokat! Meg is valaszolnam...

- igen, userek egymassal szembeni vedelmere kell, hogy ne rugjak ki a vasat..

Ebbol kifolyolag nem tokeletes megoldas a kernel szintu korlatozas, mert a mysql-en belul kell(ene) megakadalyozni, hogy egy-egy elszallt lekerdezes orakig tekerje a gepet, de ezen felul barmennyit futhat (gondolok itt pl. esetlegesen csucsidoben az sql terhelesre, ahol a tuske orakig is tarthat, de a terhelesminta a "normalis", vagyis nem egy elszabadult processz eszi meg a gepet, hanem a rendes lekerdezesekbol kell sokat csinalnia)

- mivel 1 adott query a mysql barmelyik threadjen lefuthat, megha lehetseges volna is a threadeknek kulon usert adni, akkr se lehetne megmondani, hogy melyik thread fogja vegrehajtani a query-t

a mysql monitorozasa es a tullogo query-k kilovese elmeletben nem rossz, de nem tudok 7/24-ben a konzol elott ulni :(

nezegetem tovabb a konfigot, hatha.

Erre a mediatemple megoldasa volt a legkulturaltabb. Nekik per-user mysql instancok futnak es van 1 specko balancer alkalmazasuk ami szetszorja user alapjan a connectionoket a megfelelo instanceokhoz. Tok tiszta. Mondjuk picit tobb user picit tobb mysql stb. Nalad nemtom hogy birnad memoriaval.

Viszont! A Mysql-t alapvetoen az kepes nagyon megenni amikor agyatlan fejlesztok kerdezik osszevissza a hulyeseget a kurvasok rekordbol lehetoleg szebbnel-szebb joinokkal se temptablat csinal. Alapesetileg 32 megaig a temptablakat nem irja ki diszkre a mysql (tmp_table_size). Amikor diszkre dolgozik na az a halal. Ezt ugy tudod legegyszerubben megoldani, h felmouontolsz egy 1-2 mega kornyeki mondjuk shmfs-t es ezt a konyvtarat adod meg tempdirnek a mysqlnek :)))) (tmpdir). Innentol az ilyen kverik egyszeruen elszallnak majd valami hibaval.

apesetileg 32 megaig a temptablakat nem irja ki diszkre a mysql (tmp_table_size). Amikor diszkre dolgozik na az a halal. Ezt ugy tudod legegyszerubben megoldani, h felmouontolsz egy 1-2 mega kornyeki mondjuk shmfs-t es ezt a konyvtarat adod meg tempdirnek a mysqlnek :))))

Na ehhez csak gratulalni tudok. Ez pont az, mintha a windows swapfile-jat raknad ramdisk-re.
Esetleg ha megnezned a tmp_table_size opciokat es tarsait, akkor azt a default 32 megas limitet feljebb lehetne rakni...

Koszonom a gratulaciodat :) Tudod en a hulye fejleszto ellen hasznalom ezt ugyanis amikor temptablakkal tobb gigabyte ramot felzabalnak akkor tanuljanak meg inkabb SQL-t kodolni...

Tovabba szeretnelek megkerni, hogy ne write-only uzemmodban mukodj. Fentebb leirtam az altalad emlitett es szamomra megtekintesre javasolt tmp_table_size valtozot...

Nem hiszem, hogy a MySQL ennyire fejlett lenne, az OS-ből pedig nyilván nem tudod ezt megfelelően szabályozni, hiszen nincs mi alapján megkülönböztetni a usereket.

Ha komoly igényeid vannak, még mindig használhatsz komoly RDBMS-t, például Oracle-t, ami tud ilyet (resource managernek hívják).

Sziasztok!
Valami megoldás biztos, hogy van erre. Én csak kísérleti jelleggel futtatok otthon a gépemen (egyelőre XP alatt) egy mysql szervert, de futtattam már rajta olyan lekérdezéseket, amelyek több millió sort dolgoztak fel. Futtatás közben a process listán a mysqld folyamatosan 48-49%-on pörgette a CPU-t, még véletlenül sem használt ki a proci teljesítmény felénél többet. Ha meg akarod tudni, hogy hogyan kell a szervert így konfigurálni, talán érdemes azon elindulni, hogy a szerver telepítésekor milyen változókat mire állít be. Telepítéskor feljánl ugyanis 2-3 opciót, hogy milyen környezetben szeretnéd használni a szervert (a gép dedikált mysql szerver, vagy fejlesztői gép, ilyesmiket). Szerintem az enyém azért használja csak a proci felét, mert én valami "desktop computer" configot választottam.

@marczi

Koszi! Igazabol idokozben en is arra jutottam, hogy egy ilyesmit kell irnom es megvan a "resource manager" :)

@bra

Igazad van. Most eloszor gondolkodtam el, hogy megiscsak van hova fejlodnie a mysql-nek... Igazabol sztem ez a resource manager nem egy lehetetlen vallakozas, mert pl. azt konyveli hogy melyik query mennyit evett es van long_query log is. Igazabol egy ilyen kulso monitorozo daemon nulla v. trivialis butykolest kovetelne meg a mysql-be, csak meg kellene csinalniuk a sracoknak. Addig marad az mtop...