FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
Hej
Vi driver ett litet onlinedatorspel med php/mysql som bas och har väldiga problem med mySQLs prestanda. mySQL håller på att bli vår största bottleneck och iom att gängse uppfattningen är att den skall vara grymt snabb så misstänker jag att det är vi som är klåpare på att sätta upp den korrekt och inte tillverkarna som gjort en värdelös databasserver. Vårt databasserver har följande hårdvara. AMD sempron 3000+ 512M Ram 80 gigs SATA hd vi kör mySQL version 4.1 på windows 2k. Som det är nu så börjar vår site "sega" sig vid ca 25-30 samtida användare(normalt webbsideklickande) och det känns väldigt få. Är det någon som kan uppskatta om det är normalt? om inte vad borde det ligga på ungefär? och sist men inte minst är det någon som har en aning om vad vi skall göra för att få upp prestandan? (har micklat med cachevärden, connections, trådar och index men inget hjälper) /Fredrik |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Flitig postare
|
Du säger att du kör Windows 2k, är de server version eller enbart en klient? För är de en klient så kan de förklara varför de ballar ur.
|
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Mycket flitig postare
|
Hur ser databasen ut (tabell och index definitioner) samt hur ser de frågor ut som typiskt körs varje gång en sida laddas.
Jag frågar för jag tror som sagt att det rör sig om att ni gjort något designfel elelr missat någon optimering. |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Mycket flitig postare
|
Det jag brukar göra är att installera mytop som är som top fast för mysql. Gör det enklare att övervaka vilka frågor det är som tar tid. Man får även ut siffror som antal frågor per sekund, hur stor procent av frågorna som cachas mm. Ofta brukar det vara en eller några få frågor som slöar ner. När jag väl hittat vilka det är så är det bara börja trixa med EXPLAIN för att se varför just de är långsamma. Detta hjälper ju ioförsig inte om det är hårdvaran som är flaskhalsen men själv tycker jag den burken borde klara med, men det beror självklart vilka frågor och antal frågor som ställs.
För optimering av MySQL skulle jag tipsa om boken: http://highperformancemysql.com/ . Själv hade jag enorm nytta av den. |
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Har WN som tidsfördriv
|
20-30 samtida onlinebesökare på en websida låter väldigt lite, brukar gå att ha betydligt fler innan det blir bekymmer.
Jag misstänker att ni antingen har sjukt många databasförfrågningar och / eller kodat sidan på ett klumpigt sätt som kräver onödiga resurser i samband med dessa. Ni kanske har moment då ni låser databasen för att göra en uppdatering ofta och därför upplevs den som seg? |
|||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Bara ett inlägg till!
|
Just nu är det 600 pers online på min största sajt. Totalt kör MySQL 130 frågor per sekund på den servern. Enbart MyISAM- samt HEAP-tabeller. Det är ca. 10% av CPU:n kapacitet. Burken är en P4 2,8GHz.
Om ni bara vill ha generella tips för ökad prestanda föreslår jag att ni läser kapitlet om optimering i manualen. |
|||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
MyISAM tabeller brukade vara sega vid updates pga att de låste hela tabellen..kanske kan va nåt att kolla på
Server side cachning - verkar som väldigt få använder det (?) men väldigt ofta kan man ju cacha html:en som genereras på många sidor ..kan ju drastiskt minska antalet db-anrop |
||
![]() |
![]() |
![]() |
#8 | |||
|
||||
Har WN som tidsfördriv
|
Citat:
Men bäst är som sagt tidigare att se över koden, mysql klarar väldigt många anrop/sek så länge allt är ok. //Björn |
|||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Nykomling
|
Tack för alla bra svar.
Tabm skall jag förklara lite mer hur vår databas ser ut. Den består av ca 60 stycken innodb tabeller med varierande grad av fk connections och datamängd från ett par tusen till ett par miljoner rader. Det finns säkerligen både bra och dålig design bland alla dessa tabeller och ännu troligare finns det dåliga sqlsatser. Men det är inte det som är vårat stora problem. (tror vi inte iaf) Vi gjorde idag ett litet testprogram för att jämföra de 2 databaser vi har tillgång till (extremt ovetenskapligt och missvisande men iaf) för att visa vilka stora skillnader det är. Tillverkade ett litet delphiprogg som ansluter till mysql via odbc och till en paradoxtabell BDE. Databasen består i bägge fallen av en enkel tabell med ett index och ett intvärde. Delphiprogrammet klarar då runt 56 000 inserts i sekunden till paradoxtabellen men endast runt 30 inserts per sekund till mysqltabellen. Jag har också skrivit en enkel phpsida med en loop som insertar i samma mysql-tabell och den klarar ca 58 inserts i sekunden. Det vill säga mysql-insertsen kör extremt mycket långsammare. Jag har även testat med delete och edit och i de fallen är skillnaderna ännu större. Visst det är olika metoder och olika connectionsätt men att det skall skilja så mycket känns inte rätt. Det vi funderar över är om mysql skall vara så här slött. Låter det rimligt med under 100 inserts i sekunden eller ligger vi en faktor 1000 fel? Vi kör klientversionen av win 2k, möjligt att vår enda chance är att testa ett annat os men då det kräver en hel massa arbete så känns det som en sista utväg. |
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Medlem
|
Har du en tabell struktur ?
|
||
![]() |
![]() |
Svara |
|
|