WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Prestanda (https://www.wn.se/forum/showthread.php?t=11087)

Conth 2005-11-29 14:33

Har en fråga om prestanda på min webbsida.

Den använder Linux/Apache/Php/mysql och fungerar utmärkt ända tills det kommer upp i många samtidiga användare (+200 inom ett par minuter)

Jag har gått igenom mysql config (max_connections=300 mm), apaches config (MaxClients 255 mm)
Kör på en Pentium 4 (3 Ghz) med 2 GB minne

Jag har ju rätt många sql accesser men inget dramatiskt i "slow-loggen"

Någon som har något tips på något jag bör fixa/undersöka ??

Björn 2005-11-29 15:30

Är databasen tillräkligt normaliserad?

Conth 2005-11-29 15:56

Ja det skulle jag vilja påstå. Säkert inte perfekt och jag gör onödigt många accesser (det är utvecklat utan max hänsyn taget till den volym det blivit). Men det finns inga tunga join eller dyl.

Har jobbat på att minska omläsningar i sql genom att använda mer sessionsvariabler och cachning men utan större resultatförbättring.

kullervo 2005-11-29 16:59

Att du behöver ha max_connections=300 för MySQL tyder på att frågorna som utförs ofta blokeras. På min server har jag ungefär 500 online samtidigt totalt på några olika sajter. Det brukar vara ungefär en handfull mysql-anslutningar samtidigt.

Kör igång MySQL Administrator och kolla i statistiken. Där är värderna kommenterade så att du får vet om det är bra eller dåligt.

Jag skulle gissa på att ditt problem är att du har många updates i en MyISAM-tabell. Medans man ändrar i en MyISAM-tabell är hela tabellen låst. En lösning på det problemet är att byta tabelltyp till InnoDB. Killen som har Sockerdricka.nu hade det problemet tidigare i år och fick väldigt bra resultat. Finns en tråd om det här på WN.

Conth 2005-11-29 22:39

Det låter rimligt.
Visste inte att hela tabellen blir låst. Det är mycket interaktivitet och databsen uppdateras flitigt.

En liten sidofråga - trodde att limit i en select sats begränsade rader som hämtas. Men i explain får jag ut alla rader som matchar min "where sats". Är det någon skillnad i effektivitet att använda limit x kontra att själv "hämta" X rader (fetch) ??

*edit stavning

zoran 2005-11-29 23:56

Citat:

Originally posted by Conth@Nov 29 2005, 15:33
Har en fråga om prestanda på min webbsida.

Den använder Linux/Apache/Php/mysql och fungerar utmärkt ända tills det kommer upp i många samtidiga användare (+200 inom ett par minuter)

Jag har gått igenom mysql config (max_connections=300 mm), apaches config (MaxClients 255 mm)
Kör på en Pentium 4 (3 Ghz) med 2 GB minne

Jag har ju rätt många sql accesser men inget dramatiskt i "slow-loggen"

Någon som har något tips på något jag bör fixa/undersöka ??

Ja, var ska man börja?

Använder du persistent connections? Använder du mysqli_prepare()?

Kan vara något att titta på i så fall.

Conth 2005-11-30 00:04

Ja jag använder persistent connections (fast db ligger i localhost verkar det ha positiv effekt).
Däremot använder jag inte mysqli_prepare. Kör inte php 5 ännu.

Jag har lite hemläxa att göra - är medveten om det. Det är (positiva) problem när populariteten växer mer än man tänkt sig när man började "hacka"... ;-)

Tanken var bara att höra om det finns något enkelt och snabbt att göra medan jag "läser på".

InnoDB låter ju intressant... Någon annan som konverterat från myISAM och vill dela med sig av erfarenheten ?

Crotalus 2005-11-30 01:39

Citat:

Det låter rimligt.
Visste inte att hela tabellen blir låst. Det är mycket interaktivitet och databsen uppdateras flitigt.

Byt tabellmotor till InnoDB (eller byt databasengine till PostgreSQL ;) ).

Citat:

En liten sidofråga - trodde att limit i en select sats begränsade rader som hämtas. Men i explain får jag ut alla rader som matchar min "where sats". Är det någon skillnad i effektivitet att använda limit x kontra att själv "hämta" X rader (fetch) ??
Du blandar nog ihop antalet rader som returneras med antalet rader som query-exekveraren måste gå igenom för att sammanställa din databasfråga.

Henrik 2005-11-30 08:49

Citat:

InnoDB låter ju intressant... Någon annan som konverterat från myISAM och vill dela med sig av erfarenheten ?
Inga problem alls när vi gjorde det för de flesta av våra tabeller. Bra effekt prestandamässigt för databasintensiva sajter, helt klart!

kullervo 2005-11-30 12:39

Citat:

Originally posted by Conth@Nov 30 2005, 00:04
InnoDB låter ju intressant... Någon annan som konverterat från myISAM och vill dela med sig av erfarenheten ?
De trådarna jag tidigare snackade om är dessa:
http://www.webmasternetwork.se/index.php?a...&hl=innodb&s=wn
http://www.webmasternetwork.se/index.php?a...&hl=innodb&s=wn

Edit: Tycker du ska kolla på den fina statistiken som MySQL själv samlar in och analysera den för att se vart flaskhalsarna sitter. Som sagt, MySQL Administrator underlättar för detta.

Conth 2005-11-30 14:44

Tack för hjälpen. Jag måste se till att uppgradera mysql för att kunna köra InnoDB (har 3.23.54 nu).

En liten undran är varför man inte alltid kör InnoDB - vad är nackdelen - jag har bara läst att det är fördelar... ??

kullervo 2005-11-30 15:14

Citat:

Originally posted by Conth@Nov 30 2005, 14:44
Tack för hjälpen. Jag måste se till att uppgradera mysql för att kunna köra InnoDB (har 3.23.54 nu).

En liten undran är varför man inte alltid kör InnoDB - vad är nackdelen - jag har bara läst att det är fördelar... ??

3.23 är ju inte direkt nytt. Den har inte ens query cache. Eftersom du fortfarande inte verifierat att det är just låsningen av MyISAM-tabellerna som är flaskhalsen så kan jag tipsa om att det hänt en hel del med MySQL sedan 3.23 var aktuellt.

MyISAM är snabbare än InnoDB på en hel del. Hur mycket eller på vad jag jag ingen koll på. Är det inte så att MyISAM är MySQLs egna tabellformat medans InnoDB är adopterat på senare tid?

Jonas 2005-11-30 20:55

Citat:

Originally posted by kullervo@Nov 30 2005, 16:14
MyISAM är snabbare än InnoDB på en hel del. Hur mycket eller på vad jag jag ingen koll på. Är det inte så att MyISAM är MySQLs egna tabellformat medans InnoDB är adopterat på senare tid?
Tror InnoDB är ett tabell format som är utvecklad vid sidan utav MySQL och som MySQL valt att implementera.

Från http://dev.mysql.com/doc/refman/4.1/en/inn...b-overview.html
Citat:

InnoDB is used in production at numerous large database sites requiring high performance. The famous Internet news site Slashdot.org runs on InnoDB. Mytrix, Inc. stores over 1TB of data in InnoDB, and another site handles an average load of 800 inserts/updates per second in InnoDB.
InnoDB implementerades först runt MySQL 3.23.38

Så Conth du bör ha InnoDB stöd i MySQL. Dock rekommenderar jag till att uppgradera till minst 4.1 eftersom det har skett en kraftig prestanda ökning mellan 3.23 -> 4.0 -> 4.1.

Conth 2005-12-13 21:16

Har uppgraderat till ny version av mySql och konverterat de tyngre tabellerna till InnoDB + att jag satt upp Innodb's minnesutnyttjande.

Viss skillnad ! (Obs underdrift... *L*)

Tack för hjälpen!

kullervo 2005-12-13 22:32

Har du någon uppfattning om det var uppgraderingen av MySQL eller bytet till InnoDB som gav mest skjut?

1337pm 2005-12-14 11:19

Jag är då novis i ämnet, men kan du inte skapa index för de tabeller som det söks i ofta? Men det kanske inte är där problemet ligger?

Conth 2005-12-14 11:54

Citat:

Har du någon uppfattning om det var uppgraderingen av MySQL eller bytet till InnoDB som gav mest skjut?
Jag tror det var Inno... Först blev det ingen skillnad och jag håll på att bryta ihop *L*, men sedan satte jag upp minnes utnyttjandet via innodb_buffer_pool_size och då blev det en stor effekt. Tror i alla fall att det var avgörnade. Problemet när man felsöker är att man skruvar lite här och där...

Citat:

Jag är då novis i ämnet, men kan du inte skapa index för de tabeller som det söks i ofta? Men det kanske inte är där problemet ligger?
Nej huvudproblemet var nog låsningar på tabellnivå i myIsam tabeller när jag läste och uppdaterad i samma tabell med hög frekvens.


Alla tider är GMT +2. Klockan är nu 08:45.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson