DualCore Server + MySQL
DualCore Server + MySQL
Hallo Leute,
ich bin gerade am überlegen ob mein neuer Server ein AMD Athlon 64
3700+ oder einen AMD Athlon 64 X2 4200+ Dual Core enthalten soll.
RAM-Ausstattung wäre beides mal 2GB.
Einsatzzweck der Sache: Datenbank-Server mit hauptsächlich InnoDB-Tabellen.
Meine Frage:
Kann X2 bei einem puren Datenbank-Server genutzt werden bzw ist das sinvoll?
Danke
TO
ich bin gerade am überlegen ob mein neuer Server ein AMD Athlon 64
3700+ oder einen AMD Athlon 64 X2 4200+ Dual Core enthalten soll.
RAM-Ausstattung wäre beides mal 2GB.
Einsatzzweck der Sache: Datenbank-Server mit hauptsächlich InnoDB-Tabellen.
Meine Frage:
Kann X2 bei einem puren Datenbank-Server genutzt werden bzw ist das sinvoll?
Danke
TO
Re: DualCore Server + MySQL
Nimm den Dual-Core und ein 32bit OS.
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Re: DualCore Server + MySQL
Das mit den 32bit war klar, hatten wir beide (und noch einige andere Elite-Members hier) schonmal diskutiert bzw. besprochen.
Das Problem ist doch wenn ich es richtig sehe folgendes: Kann man den mysql-Prozess davon überzeugen sich an beide cpus zu binden bzw beide auszulasten. Weil wenn die Leistung von einem CPU nacher bracht liegt dann hab ich wenig davon.
Anders wäre natürlich die Situation wenn ich noch einen Webserver dort laufen hätte, aber dem ist nicht so, ich will also das der mysqld beide CPUs komplett benutzt!
Danke
TO
Das Problem ist doch wenn ich es richtig sehe folgendes: Kann man den mysql-Prozess davon überzeugen sich an beide cpus zu binden bzw beide auszulasten. Weil wenn die Leistung von einem CPU nacher bracht liegt dann hab ich wenig davon.
Anders wäre natürlich die Situation wenn ich noch einen Webserver dort laufen hätte, aber dem ist nicht so, ich will also das der mysqld beide CPUs komplett benutzt!
Danke
TO
Re: DualCore Server + MySQL
Per Google: http://forums.mysql.com/read.php?24,9787,9869#msg-9869
Sollte Deine Frage ausreichend beantworten ;)
Andernfalls kannst Du ja noch warten bis isotopp über diesen Thread stolpert.
Sollte Deine Frage ausreichend beantworten ;)
Andernfalls kannst Du ja noch warten bis isotopp über diesen Thread stolpert.
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Re: DualCore Server + MySQL
Hy,
also irgendwie bin ich nach Lesen des Links nicht schlauer als vorher. Aber wie du bereits sagtes: Warten wir auf den Spezialisten!
Gruß und Danke
TO
also irgendwie bin ich nach Lesen des Links nicht schlauer als vorher. Aber wie du bereits sagtes: Warten wir auf den Spezialisten!
Gruß und Danke
TO
Re: DualCore Server + MySQL
MySQL nutzt beide CPUs. Voraussetzung ist natürlich ein SMP-Kernel.theomega wrote: Das Problem ist doch wenn ich es richtig sehe folgendes: Kann man den mysql-Prozess davon überzeugen sich an beide cpus zu binden bzw beide auszulasten. Weil wenn die Leistung von einem CPU nacher bracht liegt dann hab ich wenig davon.
Auf einem MySQL-Server unter meiner Fittiche sind zwei Dual-Core Opterons drauf. Ein "top" sieht interessant aus.
Der mysql-Prozess liegt immer bei 99% CPU-Last. Drücke ich "1", zeigt er eine ziemlich gleichmäßige Auslastung aller CPUs an.
MySQL scheint also nur einen Prozess aufzumachen, aber mehrere Threads, die dann die zusätzlichen CPUs nutzen. Der Apache macht ja mehrere Prozesse auf.
Nimm den CualCore, nimm ein SMP-Kernel und (solange Du Dir sicher bist, den RAM nicht erweitern zu wollen) ein 32bit OS.
Grüße
Re: DualCore Server + MySQL
MySQL ist eine Single Process-Multiple Threads Architektur. Es wird das von der libc ausgegebene Threadmodell verwendet. Auf meinem System (keine statisch gelinkte libc):theomega wrote:ich bin gerade am überlegen ob mein neuer Server ein AMD Athlon 64 3700+ oder einen AMD Athlon 64 X2 4200+ Dual Core enthalten soll. RAM-Ausstattung wäre beides mal 2GB.
Einsatzzweck der Sache: Datenbank-Server mit hauptsächlich InnoDB-Tabellen.
Meine Frage:
Kann X2 bei einem puren Datenbank-Server genutzt werden bzw ist das sinvoll?
Code: Select all
kris@linux:~> ldd /usr/local/mysql-max-5.0.22-linux-i686-glibc23/bin/mysqld| egrep "(libc.|libpthread)"
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4003e000)
libc.so.6 => /lib/tls/libc.so.6 (0x400c4000)
kris@linux:~> getconf GNU_LIBPTHREAD_VERSION
NPTL 2.3.5
InnoDB verwendet intern mehrere Threads, dazu kommen die von Deinen Connections aufgemachten und mit SHOW PROCESSLIST sichtbaren Threads.
Code: Select all
linux:/export/data/rootforum # ./start
linux:/export/data/rootforum # Starting mysqld daemon with databases from /export/data/rootforum/data
linux:/export/data/rootforum # mysql-3340
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1 to server version: 5.0.18-max-log
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
root@localhost [(none)]> show engine innodb statusG
...
--------
FILE I/O
--------
I/O thread 0 state: waiting for i/o request (insert buffer thread)
I/O thread 1 state: waiting for i/o request (log thread)
I/O thread 2 state: waiting for i/o request (read thread)
I/O thread 3 state: waiting for i/o request (write thread)
...
Eine einzelne Query nutzt bis einschließlich MySQL 5.0 in den weitaus meisten Fällen nur eine CPU.
Ein Slave-Server, der keine weiteren Reads bekommt, sondern nur repliziert ("Backup-Slave") kann im Prinzip nur eine CPU nutzen.
Als Daumenregel kann man sich merken, daß es nicht sinnvoll ist, mehr CPUs zu haben als Dinge, die man in Bewegung halten will. Ein Quad-Dualcore Opteron mit 2 Platten wartet halt schneller auf Disk-I/O.
Als Daumenregel kann man sich auch merken, daß ein Datenbankserver in der Regel zunächst einmal nicht an CPU-Überlastung stirbt, sondern daran, daß die Platten überlastet sind, weil er zu viele Daten lesen oder schreiben muß.
Ram ist für die meisten Leute ein besserer Invest als CPUs. Mehr Platten (nicht größere Platten) sind ebenfalls für die meisten Leute ein besserer Invest als CPU (aber viel schlechter als RAM in allen read-lastigen Fällen).
Es ist natürlich trivial, ein pathologisches Gegenbeispiel zu konstruieren, aber für die weitaus meisten in der freien Wildbahn vorkommenden Anwendungen hält die Daumenregel ganz gut.
Frage
Habe 2 Dualcore Master-Slave Server mit je 2 GB Ram.
Beide neu aufgesetzt (Debian 4.0) und mysql 5.0.27 drauf.
Master-Slave läuft ohne Probleme.
Aber... bei jedem Server werden alle mysql-Prozesse über nur einen Systemprozess abgearbeitet, sprich ein show processlist zeigt immer nur eine Zeile was der mysql tut. Das war vor dem neu aufsetzen anders, da waren mal locker 500 mysql Prozesse und da war die Performance auch viel viel besser.
Im php der Client Server sind die max connections,... alle auf -1, also unbegrenzt.
Frage, wo ist das vorgegeben das der nur einen Prozess haben darf und nicht wie zuvor zB 1000 oder so...
Help!
Beide neu aufgesetzt (Debian 4.0) und mysql 5.0.27 drauf.
Master-Slave läuft ohne Probleme.
Aber... bei jedem Server werden alle mysql-Prozesse über nur einen Systemprozess abgearbeitet, sprich ein show processlist zeigt immer nur eine Zeile was der mysql tut. Das war vor dem neu aufsetzen anders, da waren mal locker 500 mysql Prozesse und da war die Performance auch viel viel besser.
Im php der Client Server sind die max connections,... alle auf -1, also unbegrenzt.
Frage, wo ist das vorgegeben das der nur einen Prozess haben darf und nicht wie zuvor zB 1000 oder so...
Help!
Re: Frage
SHOW PROCESSLIST zeigt Dir die Connections, also die Anzahl der Threads, die arbeiten (ohne die systeminternen Threads). Wenn da nur eine Zeile kommt, dann nutzt Du auch nur einen Thread.neodg wrote:Aber... bei jedem Server werden alle mysql-Prozesse über nur einen Systemprozess abgearbeitet, sprich ein show processlist zeigt immer nur eine Zeile was der mysql tut. Das war vor dem neu aufsetzen anders, da waren mal locker 500 mysql Prozesse und da war die Performance auch viel viel besser.
Im php der Client Server sind die max connections,... alle auf -1, also unbegrenzt.
Frage, wo ist das vorgegeben das der nur einen Prozess haben darf und nicht wie zuvor zB 1000 oder so...
"ps axuwww| grep mysql[d]" zeigt Dir die Prozesse, wenn NPTL verwendet wird (MySQL nutzt immer nur einen Prozeß). "ps axuwww -L | grep mysql[d]" zeigt Dir die Threads in diesem Prozeß. Mit Linuxthreads statt NPTL zeigt Dir "ps axuwww| grep mysql[d]" die Threads als Prozesse an.