Optimale Apache & MySQL Config

Arno Nühm

Registered User
Ich hab mir bei 1&1 den XL64 mit Suse bestellt und bräuchte für folgende Hardware möglichst die optimalsten Configs für Apache & MySQL:

* AMD Athlon 64 3500+
* 2.048 MB DDR-RAM
* 2 x 120 GB Festplatnte (RAID1)

Ich hab bei Strato seit einem Jahr bereits den Windows Server MW und mir über die Zeit hinweg eine gute Config zusammengestellt, allerdings lüppt die nur unter Windows gut. Der alte Server hat auch nur einen P4 2,6 GHz ud 1 GB RAM. Da der neue Server ein Linux System ist, gibt es beim Apache mehr Einstellungsmöglichkeiten (StartServers, MaxServers, etc) und damit kenne ich mich leider nicht aus.

Auf dem neuen Server werden hauptsächlich hoch frequentierte Websites laufen.Die MySQL Config sollte daher möglichst mind. 200 queries per second problemlos bearbeiten und gut cachen. Qcache und eAccelerator nutze ich bereits auf dem Windows Server, daher werden die auf dem Linux Server ebenfalls zum Einsatz kommen.

Der aktuelle hat jetzt am Abend etwa "Queries per second avg: 208.235".

Gibt es hier Config-Spezialisten oder muss ich wieder bei 0 anfangen und testen?
 
Arno Nühm said:
Der aktuelle hat jetzt am Abend etwa "Queries per second avg: 208.235".
Das sollte der o.g. Server ohne weitere Optimierung im Leerlauf schaffen. ;)
Im Ernst:
Wichtig ist, was es für Queries sind. Viele Joins oder temporäre Tables brauchen ihre Zeit und ihren Speicher.
Einfache 'Einzeiler' (wie sie meistens vorkommen) sind locker flockig abgearbeitet und auch gecached.

huschi.
 
Arno Nühm said:
es sind schon größere joins, teilweise über max. 4 tabellen...
Fallen die bereits unter Slow-Queries? (Ein Blick in das entsprechende Logfile hilft. Evtl. mysql dazu auffordern dieses anzulegen.)

Wie gesagt, grundsäztlich sollte die Maschine das schaffen. Insbesondere mit 2 GB RAM. Natürlich kommt es drauf an, was sonst alles noch läuft, aber ich sehe eigendlich keine Bedenken. Der größte Flaschenhals dürfte der Festplattenzugriff sein. Das kann man durch Minimierung der Logfiles (z.B. mysql.bin ausschalten) aber in den Griff zu kriegen sein.

PS: Punkt 3 unserer Boardregeln nicht vergessen, danke.

huschi.
 
Aktuell hab ich die slow-query-zeit auf 30 Sekunden gesetzt und nach 1 Tag Laufzeit sammeln sich max. 10-20 slow queries an, eben die, die über mehrere Tabellen gehen. Optimierungsmöglichkeiten gibt es hierbei allerdings nicht, da die Tables schon gut mit Indexes ausgestattet sind und sich die Queries auch wirklich nur das laden, was sie wirklich brauchen.

Logfiles hab ich sowieso weitesgehend ausgeschaltet (auch beim Apache), bis auf den slow-query-log.

Auf dem Server laufen aktuell mehrere Projekte, die recht viele Besucher und PI's haben. Den gesamten Besucher-Traffic hab ich aktuell noch nie zusammengezählt, aber ein Projekt alleine hat am Tag ~7.000 - 8.000 unique Besucher.

Mir gehts bei diesem Thema primär darum für die Hardware entsprechende Apache & MySQL Configs gestellt zu bekommen, welche die Hardware entsprechend ausnutzen. Nicht das meine Projekte am Ende ziemlich langsam sind aufgrund von falscher Konfiguration oder sie evtl. noch schneller laufen könnten, wenn man die Config anpasst.

Ich denke hier spielen Erfahrungswerte eine große Rolle. Ich hatte bisher nur schwächere Server und steige nun auf einen großen Server um, daher kenne ich die Grenzen noch nicht aus, wie weit ich mit der Apache & MySQL Config gehen kann, so dass ich die Server-Leistung auch wirklich ausnutze.
 
Last edited by a moderator:
Arno Nühm said:
Mir gehts bei diesem Thema primär darum für die Hardware entsprechende Apache & MySQL Configs gestellt zu bekommen, welche die Hardware entsprechend ausnutzen.
Das Problem ist, daß es keine allgemeingültigen Erfahrungswerte gibt. (Denn wenn es so wäre, würden sie irgendwo stehen.)
Du mußt einfach die Maschine in Betrieb nehmen und dann mal sehen, wo es hängt. Evtl. bremst erst der Apache; vieleicht aber auch direkt die MySQL-Datenbank. Evtl. aber haperts am MTA oder sonst wo.
Sowas kann man nie vorher sagen. Und das schöne am Linux-Server ist ja, daß es fast vollständig zur Laufzeit zu konfigurieren ist. ;)

Also, schmeiß das Zeug drauf, und wenn es dann in die Knie geht, sehen wir mal woran es hängt.

huschi.
 
ich hab nun für meinen strato server (P4 2,6 GHz & 1 GB RAM) folgende config:

apache 1.3.33:
Code:
Timeout 120
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MaxRequestsPerChild 0
ThreadsPerChild 200

PHP Version 4.4.1 with eAccelerator v0.9.4-rc1

MySQL 4.0.26-nt-max

Code:
query_cache_type 	= 1
query_cache_limit	= 8M
query_cache_size	= 128M

max_connections		= 300
max_connect_errors	= 1000

key_buffer_size		= 512M
tmp_table_size		= 128M
table_cache		= 2048
thread_cache 		= 100

read_rnd_buffer_size	= 1M
sort_buffer_size 	= 4M
read_buffer_size 	= 1M

wait_timeout		= 15
connect_timeout		= 10

läuft eigentlich wie butter, allerdings wird der apache prozess manchmal ein wenig zu groß und dann werden keine anfragen mehr bearbeitet, jemand einen tipp? :)
 
Arno Nühm said:
KeepAlive On
Schalt den mal auf off. Dann werden die Childs schneller frei um neue Anfragen zu beantworten.

PS: Erinner Dich bitte an Punkt 3 der Boardregeln. Weiter oben ging es doch schon ganz gut... :)

huschi.
 
Back
Top