Performance-Probleme
Alexander Rehbein
- software
Hallo,
ich habe momentan noch leichte Performance-Probleme mit meinem LAMP-Server.
Und zwar greifen ca. 50 User gleichzeitig auf meine Seite zu (1,2 ghz p3, 512mb ram) und "erstellen" so ca. 70 apache-prozesse und 50 mysql-prozesse (laut top und pstree), obwohl ich wesentlich weniger eingestellt habe:
[httpd.conf]
MinSpareServers 5
MaxSpareServers 15
Der Seitenaufbau ist extrem langsam (und es ist nur diese eine Seite auf dem Server!) Server-Zeiten von bis zu 3 Minuten sind nicht selten!
Habt ihr ne Idee an was es liegen könnte?
Hier ein Auszug aus pstree:
init-+-apache---62*[apache]
|-bdflush
|-cron
|-eth0
|-gcache
|-6*[getty]
|-keventd
|-kjournald
|-klogd
|-ksoftirqd_CPU0
|-kswapd
|-kupdated
|-mdrecoveryd
|-safe_mysqld---mysqld---mysqld---49*[mysqld]
|-sshd---sshd---bash---pstree
|-syslogd
`-5*[tcpserver]
Gruss
Alexander
Hi,
ich habe momentan noch leichte Performance-Probleme mit meinem LAMP-Server.
Und zwar greifen ca. 50 User gleichzeitig auf meine Seite zu (1,2 ghz p3, 512mb ram) und "erstellen" so ca. 70 apache-prozesse und 50 mysql-prozesse (laut top und pstree), obwohl ich wesentlich weniger eingestellt habe:
Wie ist denn die Netzwerkanbindung?
Ist die vielleicht der Flaschenhals?
Bei DSL mit 128kbit Upload:
128kbit/s / 50 User ~ 2,5kbit/s / User ~ 0,3 kByte/s / User
(und das nur, wenn die theoretische Bandbreite auch real zur Verfügung steht)
cu,
Andreas
Hallo!
Und zwar greifen ca. 50 User gleichzeitig auf meine Seite zu (1,2 ghz p3, 512mb ram) und "erstellen" so ca. 70 apache-prozesse und 50 mysql-prozesse (laut top und pstree)
Wieviele Requests pro Sekunde hast Du so in "Hochzeiten"?
Was genau passiert bei einem Request?
obwohl ich wesentlich weniger eingestellt habe:
[httpd.conf]
Wie Du im Manual nachlesen kannst bedeuten die Einstellungen etwas folgendes:
MinSpareServers 5
mindestens 5 freie Prozesse
MaxSpareServers 15
höchstens 15 freie Prozesse
Apache startet und beendet dann entsprechend Prozesse.
70 Prozesse ist eigentlich noch nicht sooo schlimm, kommt eben drauf an wie groß die Prozesse sind, und was sonst noch so alle läuft.
Ich denke dass Dein Server probiert viel zu viel in den RAM zu packen, nur leider ist der zu klein und so muss er swappen, dann wird alles schrecklich langsam. Wenn Du jetzt sehr große Apache Prozesse hast, z.B. 10 MB, dann noch große MySQL-Prozesse, vielleuicht 12 MB, dann ist Dein RAM sehr schnell voll. Aber um wirklich was sagen zu können muss man erstmal wissen wo genau das Problem liegt.
Als erstes sind mal allgemeine Angaben von "top" interessant, z.B.
top -b -n 1
Die oberen allgemeinen Angaben sind sehr interessant, vor allem
CPU states
iowait
Mem
Swap
genauso die Ausgabe von "vmstat 5", daran kannst Du sehen wo genau viele Prozesse warten müssen(Festplattenzugriffe, oder RAM... )
Naja, und dann würde ich gucken dass ich den Apachen und MySQL so klein wie möglich bekomme. Alles raus was Du nicht brauchst. Evtl. MySQL und Apachen in der jeweiligen Config-Datei manuell zwingen die Anzahl der Prozesse bzw. des belegten RAMs zu reduzieren.
Wie greifst Du auf MySQL zu? Ich hoffe nicht über CGI. Versuche im Script man ein paar Zeiten zu messen, vielleicht bekommst Du dabei raus wo genau die Verzögerung liegt. Und was ist mit Caching-Headern? Kannst Du bestimmte Inhalte für eine bestimmte Zeit cachen lassen(vor allem Bilder, Javascripte teilweise auch HTML)? Überträgst Du die Inhalte komprimiert?
Evtl. auch ein DNS-Problem? Wie genau ist der Server ans Internet angebunden? Treten die Problem auch bei reinem HTML oder Grafikdateien auf?
Und es gibt noch viel mehr Möglichkeiten ;-)
Der Seitenaufbau ist extrem langsam (und es ist nur diese eine Seite auf dem Server!) Server-Zeiten von bis zu 3 Minuten sind nicht selten!
Was ist denn um 4 Uhr morgens, hast Du dann bessere Antwortzeiten?
Viele Grüße
Andreas
PS: hast Du vielleicht mal einen Link auf den Server?