PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mysql optimal für Bannerserver konfigurieren



Joaz
22.09.02, 19:36
Hi,
Ich habe hier einen gammeligen Root-server von Puretec (Root Server XXL), leider nur dieses schrottige Suse 7.2 drauf.
Hab Mysql4.0.3-Max-beta installiert, läuft eigentlich ganz gut, aber habe ein Problem mit zu vielen Connections.

Ich habe es zuerst auf 100 stehen gehabt, dann auf 250 gesetzt, was dem server zu stark überlastet hat. Nun habe ich es auf 175 stehen, allerdings sind durchschnittlich schon 135 Verbindungen offen. Und bei hohem "Andrang" gibt es wieder ein "Too many connections".
Hat jemand Tipps? Hab der Mysql zwar schon ne menge Ram zur verfügung gegeben, aber wenn der mit 175 connections & mehr nicht mehr klarkommt, nützt das auch nicht viel....

So sieht die my.cnf jetzt aus:


my.cnf
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking

set-variable = key_buffer=128M
set-variable = max_allowed_packet=1M
set-variable = table_cache=8M
set-variable = sort_buffer=64M
set-variable = net_buffer_length=8K
set-variable = myisam_sort_buffer_size=128M
set-variable = max_connections=175
log-bin
server-id = 1

tmpdir = /tmp/

[mysqldump]
quick
set-variable = max_allowed_packet=256M

[mysql]
no-auto-rehash

[isamchk]
set-variable = key_buffer=60M
set-variable = sort_buffer=60M
set-variable = read_buffer=20M
set-variable = write_buffer=20M

[myisamchk]
set-variable = key_buffer=60M
set-variable = sort_buffer=60M
set-variable = read_buffer=20M
set-variable = write_buffer=20M

[mysqlhotcopy]
interactive-timeout



Vielen Dank im vorraus!
Joaz

ChengFU
22.09.02, 21:44
Auf jeden Fall würde ich "log-bin" auskommentieren, denn eine Replikation wirst du wahrscheinlich nicht brauchen. Ansonsten könnte es interessant sein die Indexe der Tabellen zu überprüfen (also ob die sinnvoll gesetzt sind) und im Adserver zu überprüfen ob die Verbindungen sinnvoll geöffnet und geschlossen werden. (Persistent connections lohnen sich nicht immer).

Achja, fast vergessen:
Wenn du keine InnoDB-Tabellen benutzt, dann würde ich derzeit noch den aktuellsten Mysql 3.23 installieren. Die MyISAM-Tabellen unterstützen zwar keine Transaktionen, sind dafür aber schneller und im 3.23 ist wharscheinlich weniger Debugging-Code drin als in der 4er-Serie.

netzmeister
22.09.02, 23:35
Hallo,

selber schuld.

Wenn Du bei Puretec einen Server orderst. Musst halt damit leben. Ein Bannerserver
ist etwas ganz besonderes.

Allerdings ist die SuSE 7.2 eine super Distribution. Die läuft auf vielen Servern einwandfrei.

Wahrscheinlich reichen RAM und Rechenleistung nicht aus. Da kannst Du nichts machen.
Für solche Sachen benötigst Du einen Spezialisten unter den Hostern.

Viele Grüße

Eicke

Joaz
23.09.02, 09:45
Original geschrieben von netzmeister
Hallo,

selber schuld.

Wenn Du bei Puretec einen Server orderst. Musst halt damit leben. Ein Bannerserver
ist etwas ganz besonderes.

Tja, was soll man tun, wenn (noch) kein Geld da ist? Ich weis, dass Puretec extrem ******e ist, aber die root-server kann man wenigstens noch etwas optimieren ;)


Allerdings ist die SuSE 7.2 eine super Distribution. Die läuft auf vielen Servern einwandfrei.

Als Gentoo - Fan kann ich das nicht sagen ;)


Wahrscheinlich reichen RAM und Rechenleistung nicht aus. Da kannst Du nichts machen.
Für solche Sachen benötigst Du einen Spezialisten unter den Hostern.


Für die 200k adviews/tag reicht der grade noch aus. Hoffe mal, dass bald mehr Geld da sein wird, damit eigene Hardware her kommen kann.

@ChengFU:
Indexe sind alle ok, Persistant connections hab ich - zumindest bei den Bannerskripten nicht.
Was mir an der Mysql4 hauptsächlich gefällt ist der Query- Cache, der macht ständig wiederholene Querys erheblich schneller.


Gruß, Joaz

MrIch
23.09.02, 09:51
nur mal so aus Intresse, mit Bannerserver meint ihr einen Werbeserver, also diese adressen, die mit adserver. oder ads. anfangen? ( die Adressen filtert mein squid eh )

Joaz
23.09.02, 10:40
Original geschrieben von MrIch
nur mal so aus Intresse, mit Bannerserver meint ihr einen Werbeserver, also diese adressen, die mit adserver. oder ads. anfangen? ( die Adressen filtert mein squid eh )
Ein Banner-Sponsoring und Tausch - System : www.hit4hit.net wers wissen will ;)

ChengFU
23.09.02, 11:03
@Joaz:

Hast du schonmal probiert das Slow-Log zu aktivieren (log-slow-queries in my.cnf)?
Wenn sich da eine einzelne Query besonders oft auftaucht kann man evtl. noch einen Index hinzufügen oder die entsprechende Query verändern.

Joaz
23.09.02, 13:42
@ChengFU:
Ich wollte eigentlich nicht wissen, wie ich die Querys verbessere, sondern die Konfiguration für Mysql noch weiter optimieren kann.
Indexe sind schon in jeder häufig benutzen Tabelle gesetzt.

Gruß, Joaz

Jinto
23.09.02, 18:18
@Joaz
Query und Anzahl offener Connections stehen in direktem zusammenhang. Es wäre evtl. nützlich das Abfrage Script zu kennen.

PS: ich hoffe du hast MySQL lizensiert :-)

ChengFU
24.09.02, 14:06
@Joaz:

Es gibt eine Faustformel, wieviel Speicher MySQL maximal belegt - findet sich irgenwo in der Doku. Wenn der Server mehr als 1GB Speicher hat könnte es interesannt sein die Index-Grössen in der Config entsprechend zu erweiteren - umgekehrt evtl. auch.
IMHO ist die Standardeinstellung in der my.cnf auf 1 GB Speicher ausgerichtet.
Ansonsten gibt es an der Config recht wenig zu optimieren, die wesentliche Arbeit liegt in den Queries (und im Speicherausbau).