ugrás a tartalomhoz

mysqld fut nagytömegben

saxus · 2006. Jún. 25. (V), 19.02
# ps ax |grep mysqld
4056 ? S 0:01 /usr/local/mysql/libexec/mysqld

van valakinek tippje, hogy miért futhat ebből 41 darab?
 
1

Hány kapcsolat?

janoszen · 2006. Jún. 25. (V), 19.06
Hányan vannak rákapcsolódva a MySQL-re? (elmélet) ha jön egy socket kapcsolat, akkor a szerver (mysqld) forkol egyet és keletkezik egy új process. A szülőprocess meg várja az új kapcsolatokat. Legalábbis ezt tanították.
2

kevesebb, mint amennyi process

saxus · 2006. Jún. 25. (V), 20.20
A show processlist; szerint kevesebb, mint amennyi process.

Addig stimmel, hogy a perzisztens kapcsolat meghagyja a kapcsolatot, de minden kapcsolat külön-külön processt igényel? Ez nekem furcsa egy kicsit, mert elvileg erre vannak a szálak.

Azért kezdett el érdekelni a dolog, mert kérdeztem valakit erről, azt mondta, náluk csak egy van, pedig nekik rendes hosting szerverük van, ez meg csak egy hobbi gép.
3

Kamikáze módszer

janoszen · 2006. Jún. 25. (V), 22.16
Hát, akkor nincs más hátra, mint a Microsoft(r) Windows(tm) kamikáze(c) módszer: elkezded kilövögetni őket és megnézed, hogy mi történik. :D :P Tényleg nem tudom, sorry... Linuxhoz annyit értek, hogy fel tudom configolni otthonra magamnak és elboldogulok vele + amennyit tanultunk róla, de ... :D
4

Mysql.com

tlof · 2006. Jún. 25. (V), 23.18
A történet egyszerü.
A mysql -t két üzem módban lehet futtani. Van a monolit rész, amikor egy process fut, és ez végzi a dolgokat, illetve van egy threadelt mód amikor minden egyes kapcsolódó processznek külön szálat nyit.

A második módszer pl. tipikusan jól használható akkor, hogyha a kevés forrásból származó kód fut a webszerveren, ahol a lapok túlnyomó töbsége igényel sql kapcsolatat, és ráadásul pconnecetet is használ. Ebben az esetben minden egyes apache processnek lessz egy mysql párja. (Tudom elméletileg lehet olyan hogy nem lessz, de ettől most tekintsünk el.) Ugyanakkor a mysql alapvetően lusta, és ha treadelt módban használod, akkor nem szivesen gyárt child processeket, ezért van egy childcache nevü hely ahol a már megszületett , de éppen most nem használt childeket tartja. Ezért lessz olyan hogy a show processlist -ben kevesebb sort látsz mint ahány a mysqld fut. Ami mondjuk mindig igaz, hisz a master process aki forkol sosem futtat query-t.

A kamikaze módszerrel meg nem jutsz semmire, mert ha kilövöd akkor pár mp-én belül újra létrejön ha szükséged van rá.

Plussz a hibát kell kezelni nem a tünetet.

Legközelebb adjatok olyan tanácsot is, hogy irjon egy cli php -ét ami 20 alá lövi a mysql szerver threadeket.
5

Threadcache

saxus · 2006. Jún. 26. (H), 03.12
Úgy néz ki a threadcache lesz a "bűnös". Csak furcsa volt, hogy lényegesen több mysqld futott, mint szerintem kellett volna.

Köszönöm mindenkitől a felhomályosítást.