vServer langsam, aber CPU und RAM nicht voll ausgelastet

Andi1982

New Member
Hallo zusammen,

ich hatte bisher nur Web-Pakete, bis meine Seite so viele Zugriffe hatte, dass sie mich dort nicht mehr wollten. Nun habe ich mich für einen vServer entschieden:

Ubuntu 10.04 LTS,
1 GB RAM
2,33 GHZ Prozessor
und Plesk 10 Installiert (da ich eine Firma hoste die ihre Mailadressen und domains selber pflegen möchte)

Vorweg, ich habe von Apache-Config und MySQL config nicht viel Ahnung. Bin Webentwickler und habe eine Seite am laufen die mit PHP und MySQL arbeitet.

Im Moment ist die Seite gut besucht, allerdings ist sie auch dementsprechend langsam. Dabei ist CPU %us und Mem used nicht ausgeschöpft. Ich denke daher dass noch etwas spiel in meinen Einstellungen ist. Was könnte man denn optimieren, wo sind die üblichen Fehler?

Hier ein Auszug aus meinem TOP:

Code:
top - 22:03:10 up 6 days, 11:10,  1 user,  load average: 4.04, 6.32, 6.54
Tasks: 103 total,   3 running,  99 sleeping,   0 stopped,   1 zombie
Cpu(s): 50.2%us, 17.6%sy,  0.0%ni, 32.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1048576k total,   406076k used,   642500k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
19913 www-data  16   0 68908  25m 3860 S  4.3  2.5   0:02.91 apache2
16175 www-data  16   0 70052  25m 4256 S  4.0  2.5   0:07.40 apache2
14139 www-data  16   0 74244  29m 4280 S  3.3  2.9   0:09.40 apache2
15840 www-data  16   0 74220  30m 5212 S  3.3  3.0   0:08.86 apache2
19924 www-data  16   0 68948  25m 3872 S  3.3  2.5   0:02.30 apache2
 5127 www-data  15   0 69976  25m 4288 S  3.0  2.5   0:23.88 apache2
 9897 www-data  16   0 68920  25m 3888 S  3.0  2.5   0:17.30 apache2
14138 www-data  16   0 68924  25m 3900 S  3.0  2.5   0:12.53 apache2
15965 www-data  15   0 70052  25m 4288 S  3.0  2.5   0:08.26 apache2
17915 www-data  16   0 68916  25m 3840 S  3.0  2.5   0:06.62 apache2
18150 www-data  16   0 68912  25m 3848 S  3.0  2.5   0:06.49 apache2
20032 www-data  15   0 68512  25m 3844 S  3.0  2.5   0:01.46 apache2
20041 www-data  16   0 68908  25m 3884 S  3.0  2.5   0:01.83 apache2
20099 www-data  16   0 69100  26m 3852 S  3.0  2.5   0:03.71 apache2
19548 www-data  16   0 68588  25m 3888 S  2.7  2.5   0:04.93 apache2
20245 www-data  15   0 70052  25m 4228 S  2.7  2.5   0:01.26 apache2
11916 www-data  16   0 74776  31m 5408 S  2.3  3.1   0:14.45 apache2
20084 www-data  16   0 68912  25m 3860 S  2.3  2.5   0:03.14 apache2
17487 www-data  15   0 73924  29m 4272 S  1.7  2.9   0:07.95 apache2
22060 www-data  15   0 68884  25m 3640 S  1.7  2.5   0:00.05 apache2
19890 www-data  15   0     0    0    0 Z  1.3  0.0   0:02.05 apache2 <defunct>
19914 www-data  15   0 68920  25m 3896 S  1.3  2.5   0:03.00 apache2
20166 www-data  16   0 69428  26m 3836 R  1.3  2.6   0:01.46 apache2
20240 www-data  15   0 68844  25m 3808 S  1.3  2.5   0:00.77 apache2
22061 www-data  18   0 68868  25m 3632 S  1.3  2.4   0:00.04 apache2
20246 www-data  15   0 68628  25m 3836 S  1.0  2.5   0:00.56 apache2
11349 mysql     15   0  158m  26m 6696 S  0.7  2.6 605:05.90 mysqld
22062 root      15   0  2460 1140  880 R  0.3  0.1   0:00.02 top
    1 root      15   0  2472 1400 1156 S  0.0  0.1   0:01.10 init
 8080 www-data  16   0 71528  28m 4356 S  0.0  2.8   0:16.27 apache2
10230 root      15   0  2304  900  712 S  0.0  0.1   0:08.31 cron
11294 syslog    15   0  1916  692  536 S  0.0  0.1   0:04.12 syslogd
11326 root      15   0  5472  912  504 S  0.0  0.1   0:00.09 sshd
11375 bind      21   0 49284 9612 2212 S  0.0  0.9   0:00.14 named
11388 root      15   0  3288  616  504 S  0.0  0.1   0:00.08 couriertcpd
11390 root      18   0  1688  508  436 S  0.0  0.0   0:00.05 courierlogger
11400 root      15   0  3288  620  504 S  0.0  0.1   0:00.00 couriertcpd
11402 root      18   0  1688  508  436 S  0.0  0.0   0:00.00 courierlogger
11410 root      15   0  3288  620  504 S  0.0  0.1   0:00.35 couriertcpd
11412 root      18   0  1688  508  436 S  0.0  0.0   0:00.03 courierlogger
11420 root      15   0  3288  620  504 S  0.0  0.1   0:00.00 couriertcpd
11422 root      18   0  1688  508  436 S  0.0  0.0   0:00.00 courierlogger
11568 root      15   0  5736 1772 1404 S  0.0  0.2   1:32.13 master
11589 postfix   15   0  5888 1876 1472 S  0.0  0.2   0:06.11 qmgr
11608 sw-cp-se  15   0  5420 2964 1488 S  0.0  0.3   0:00.44 sw-cp-serverd
11626 bind      25   0 48440 8688 2120 S  0.0  0.8   0:00.13 named
11642 root      15   0  2424  888  712 S  0.0  0.1   0:00.02 xinetd
11708 root      15   0 67012  30m  10m S  0.0  3.0   6:42.87 apache2
11874 www-data  15   0 54436  18m  448 S  0.0  1.8   0:00.73 apache2
11964 www-data  15   0 68588  25m 3892 S  0.0  2.5   0:12.32 apache2
14216 www-data  15   0 70052  25m 4280 S  0.0  2.5   0:08.88 apache2
15418 www-data  15   0 68920  25m 3848 S  0.0  2.5   0:09.69 apache2
15441 root      15   0 10636 3172 2468 S  0.0  0.3   0:00.25 sshd
15448 www-data  15   0 73908  29m 4260 S  0.0  2.9   0:17.36 apache2
15554 root      15   0  4648 2016 1476 S  0.0  0.2   0:00.03 bash
15642 www-data  16   0 68908  25m 3900 S  0.0  2.5   0:10.42 apache2
15776 www-data  15   0 68924  25m 3868 S  0.0  2.5   0:08.39 apache2
15949 www-data  15   0 68916  25m 3876 S  0.0  2.5   0:07.44 apache2
15958 www-data  16   0 68844  25m 3872 S  0.0  2.5   0:12.76 apache2
16272 www-data  15   0 68588  25m 3916 S  0.0  2.5   0:06.35 apache2
16333 www-data  15   0 68644  25m 3884 S  0.0  2.5   0:05.54 apache2
17847 www-data  16   0 70168  26m 3832 S  0.0  2.6   0:06.24 apache2
18140 www-data  15   0 74268  30m 5136 S  0.0  3.0   0:03.68 apache2
18148 www-data  15   0 68768  25m 3820 S  0.0  2.5   0:10.87 apache2
18152 postfix   15   0  5752 1752 1392 S  0.0  0.2   0:00.00 pickup
18154 www-data  15   0 68912  25m 3852 S  0.0  2.5   0:05.17 apache2
18197 www-data  16   0 73972  29m 4272 S  0.0  2.9   0:06.00 apache2
18218 www-data  15   0 68588  25m 3892 S  0.0  2.5   0:05.30 apache2
18403 www-data  16   0 68900  25m 3812 S  0.0  2.5   0:03.71 apache2
19541 www-data  16   0 68920  25m 3856 S  0.0  2.5   0:02.55 apache2
19549 www-data  16   0 74220  30m 5164 S  0.0  3.0   0:03.49 apache2
19550 www-data  16   0 68844  25m 3868 S  0.0  2.5   0:03.44 apache2
19612 www-data  15   0 68760  25m 3860 S  0.0  2.5   0:03.24 apache2
19626 www-data  15   0 68636  25m 3840 S  0.0  2.5   0:04.03 apache2
19785 www-data  16   0 68588  25m 3872 S  0.0  2.5   0:01.73 apache2
19891 www-data  15   0 74268  30m 5148 S  0.0  3.0   0:02.10 apache2
19894 www-data  15   0 69148  26m 3888 S  0.0  2.6   0:03.56 apache2
19917 www-data  16   0 73972  29m 4272 S  0.0  2.9   0:02.65 apache2
19919 www-data  15   0 68628  25m 3916 S  0.0  2.5   0:02.23 apache2
19932 www-data  15   0 68900  25m 3896 S  0.0  2.5   0:03.45 apache2
20007 www-data  15   0 68628  25m 3812 S  0.0  2.5   0:02.80 apache2
20031 www-data  16   0 68512  25m 3908 S  0.0  2.5   0:01.88 apache2
20040 www-data  15   0 68900  25m 3816 S  0.0  2.5   0:01.58 apache2
20042 www-data  16   0 68588  25m 3860 S  0.0  2.5   0:02.57 apache2
20047 www-data  16   0 68588  25m 3808 S  0.0  2.5   0:02.58 apache2
20122 www-data  15   0 70052  25m 4212 S  0.0  2.5   0:01.00 apache2
20123 www-data  15   0 68588  25m 3844 S  0.0  2.5   0:01.70 apache2
20125 www-data  16   0 68916  25m 3816 S  0.0  2.5   0:03.71 apache2
20128 www-data  15   0 68892  25m 3832 S  0.0  2.5   0:02.05 apache2
20156 www-data  16   0 68912  25m 3844 S  0.0  2.5   0:01.54 apache2
20165 www-data  16   0 68844  25m 3840 S  0.0  2.5   0:01.02 apache2
20215 www-data  15   0 68916  25m 3808 S  0.0  2.5   0:01.27 apache2
20221 www-data  16   0 68916  25m 3812 S  0.0  2.5   0:00.78 apache2
20223 www-data  16   0 68916  25m 3816 S  0.0  2.5   0:00.77 apache2
20225 www-data  15   0 68916  25m 3844 S  0.0  2.5   0:01.06 apache2
20226 www-data  16   0 73972  29m 4244 S  0.0  2.9   0:00.71 apache2
20241 www-data  15   0 74264  30m 5164 S  0.0  3.0   0:00.66 apache2
20242 www-data  15   0 68588  25m 3884 S  0.0  2.5   0:01.55 apache2
20243 www-data  18   0 68924  25m 3820 R  0.0  2.5   0:01.27 apache2
20244 www-data  15   0 69100  25m 3848 S  0.0  2.5   0:01.54 apache2
20256 www-data  16   0 69108  25m 3804 S  0.0  2.5   0:00.84 apache2
21848 www-data  16   0 73908  29m 4220 S  0.0  2.9   0:00.70 apache2
25684 postfix   15   0  6312 2720 1876 S  0.0  0.3   0:00.32 tlsmgr

Über Tipps würde ich mich freuen!

Viele Grüße
Andi
 
Was ist das denn konkret für eine Seite (Forum, Webshop, CMS) und wie viele Visits und Concurrent Connections hat die? Und ums gleich mal vorweg zu sagen. Ein vServer kann von Haus auch schon weniger performant sein als früherer Webspace sein. Auf einem vServer teilst du dir die Ressourcen des Host ja i.d.R. mit den anderen vServern. Da kann es schnell mal zu Engpässen kommen.
 
Last edited by a moderator:
Ich weiss nicht wie du darauf kommst dass deine CPU nicht voll ausgeschoepft sei ;)
Dein System hat zu jedem Zeitpunkt 6 Prozesse gleichzeitig laufen, also mehr als du CPU-Zeit kriegen kannst. (entspricht 6*100/CPU-Kerne % CPU-Belastung)

Beachte dass du bei einem vServer nicht allein die CPU belegst sondern ALLE Komponenten mit deinen Nachbarn teilen musst, egal wie "brav" oder "leistungshungrig" diese auch sind. Wenn ein Webspace nicht ausreicht ist meist der naechste Schritt eine dedizierte Hardware-Machine, entsprechende Container sind ueblicherweise nicht leistungsfaehiger als guter Webspace.
 
Hey,

danke für die Antworten. Mit der CPU habt ihr wohl recht, habe mich zu sehr von der Anzeige blenden lassen. Aber die wird wohl wirklich ausgelastet sein.

Es handelt sich um eine Community-Seite die auf einem PHP-MVC-Framework basiert, ähnlich wie CakePHP, nur etwas weniger umfangreich.

Kann ich das mit den concurrent connections irgendwo sehen? Im Schnitt sind immer so 20-30 Leute gleichzeitig online. Durch den chat sendet jeder von denen alle 4 Sekunden einen Request. Außerdem wird bei jedem klick der Seitenrefresh zur Folge hat noch Piwik angestoßen, das auf der selben Maschine installiert ist.

Meint ihr also dass meine Einstellungen soweit ok sein könnten aber der vServer einfach nicht mehr hergibt? Hatte überlegt auf den nächst größeren umzusteigen, aber der hat den selben prozessor und nur etwas mehr ram. Am RAM liegt es aber wohl nicht bei mir.

Gruß
Andi
 
Interessant wäre z.B. auch zu wissen, bei was für einem Provider Du den Server angemietet hast. Ich hatte ein ähnliches Gefühl in Sachen Perfomance und habe mir dabei Anfang des Jahres mal die Mühe gemacht, diverse Provider miteinander zu vergleichen. Mit Erschrecken musste ich feststellen, dass ich sehr große Unterschiede in der Perfomance der Provider gibt.

Ich hatte einen "mittleren" VServer bei einem größeren Hoster. Anschließend habe ich zu Testzwecken den kleinsten VServer eines anderen Providers angemietet. Der Server kostet die Hälfte, ist gefühlt wie auch mit Benchmarks etwas schneller.

Zusätzlich habe ich mich von Plesk verabschiedet. Du schreibst zwar, dass Du auf Plesk angewiesen bist. In meinem Falle war Plesk der Hauptverursacher der Perfomance-Bremse. Und erst als ich ein System ohne Plesk aufgesetzt hatte, war ich mit der Perfomance zufrieden.

Ich habe mir jedoch nicht die Zeit genommen, um zu überprüfen, an was für einer Stelle Plesk genau das System ausbremst. Ist es die Orgranisation der VHosts? Oder eventuell die Art und Weise, wie die Datenbank integriert wird? Keine Ahnung...

Ich hoffe, ich konnte Dir mit meinen Erfahrungen durch Tests mit diversen Systemen etwas helfen.
 
Und dann noch was zum Thema RAM und CPU auf virtuellen Maschinen: Ich denke, hier kann Dir ein Provider schöne Werte vorlegen. Ob diese in der Praxis so auch zur Geltung kommen, hängt von mehreren Faktoren ab.
Im obigen Vergleich, von dem ich erzählt hatte, hatte der größere Server garantierte RAM von 2 GB und mögliche RAM von 4 GB. Der kleinere hatte 512 und war trotzdem schneller.

Was für ein OS läuft auf dem Server?
Hast Du mal geschaut, wie der Apache konfiguriert ist? Werden da zuviele Requests gestartet? Oder läuft da etwas mit FCGI oder dergleichen? Hast Du mal darüber nachgedacht, so etwas wie ZendOptimizer oder eAccelerator zu verwenden?
 
Habe ein Ubuntu 10.04 LTS installiert.

Hier ein Auszug aus meiner apach2.conf, prefork ist aktiv.

Code:
Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15
<IfModule mpm_prefork_module>
    StartServers       5
    MinSpareServers    5
    MaxSpareServers    10
    MaxClients        150
    MaxRequestsPerChild   0
</IfModule>

über eAccelerator oder ähnliches habe ich mir noch keine gedanken gemacht, wir benutzen den zwar auf arbeit für unsere Webserver auch, aber was der genau bezweckt war mir nicht bewusst.

Um sich der RAM und CPU sicher zu sein müsste man also einen Root-Server nehmen richtig?
 
Wenn der Webspace zu langsam geworden ist, wäre der sinnvolle Schritt eigentlich auf besseren Webspace zu wechseln. Warum? Ganz einfach folgende Rechnung:

Der Betreiber von professionellen Webspace hat einen (mehrere) richtig gute Server, auf dem je ein Linux mit Apache-Server läuft und die Websites ausliefert. Er hat seine Techniker mit KnowHow, die da alles optimieren und das letzte aus der Kiste rausholen.

Ein vServer-Anbieter packt auf einen richtig guten Server viele vServer. In jedem vServer läuft ein Linux mit Apache-Servern, die alles andere als optimal konfiguriert sind und in 80% der Fälle noch ein komplettes Plesk mitzerren.

Vollkommen logisch, wer hier schneller ist.

Das ganze Thema http://root-und-kein-plan.ath.cx/ spar ich mir hier mal.
 
Ich wäre ja gerne bein einem hoster geblieben, aber die wollten mich ja auf Grund der vielen Seitenaufrufe nicht mehr. Und ganz fremd ist mir Linux auch nicht, nur das Fine-Tuning ist halt nicht mein Ding.
 
Zumal der prefork in der Standardeinstellung läuft. Hast du dir mal angeschaut was die einzelnen Parameter besagen und dir überlegt, sie auf deine Bedürfnisse anzupassen?

Code:
<IfModule mpm_prefork_module>
    StartServers       5
    MinSpareServers    5
    MaxSpareServers    10
    MaxClients        150
    MaxRequestsPerChild   0
</IfModule>

Anlaufstelle:
Apache Doku

Einfach mal in die Suche die einzelnen Parameter eingeben. Vielleicht wäre auch ein managed System was für dich?
 
Wow, habe eben den eaccelerator installiert und ist echt wahnsinn wie schnell das jetzt ist... Danke für diesen Hinweis!
 
Du kannst ja mal noch über eine gewisse Zeit (3-4 mal am Tag zu unterschiedlichen Zeiten) dieses Benchmark-Script auf deinem vServer laufen lassen:

http://code.google.com/p/byte-unixbench/

Damit bekommst du ein ungefähres Gefühl dafür, wie es mit der Ressourcenverteilung auf deinem Host bestellt ist. Bleiben die Benchmarkwerte über die Zeit verteilt nahezu konstant, dann ist das Ganze eine recht solide Geschichte. Weichen sie dagegen sehr stark von einander ab, dann hast du natürlich immer einer gewisse Unsicherheit mit dabei, was die Performance betrifft. Ich verfüge z.B. über einen Test-vServer bei Netcup mit vergleichbaren Specs. Ich bekomme da als Richtschnur für dich fast immer konstant einen Wert von 1000. ;)
 
Ich wäre ja gerne bein einem hoster geblieben, aber die wollten mich ja auf Grund der vielen Seitenaufrufe nicht mehr. Und ganz fremd ist mir Linux auch nicht, nur das Fine-Tuning ist halt nicht mein Ding.

Finde ich etwas komisch. Das, was du oben geschrieben hast, klingt für mich noch nicht nach "viel".


Grüße
 
Du kannst ja mal noch über eine gewisse Zeit (3-4 mal am Tag zu unterschiedlichen Zeiten) dieses Benchmark-Script auf deinem vServer laufen lassen:
Geiler Tip! Das solche Benchmarks die anderen VServer unnötig vorsätzlich beeinträchtigen und dies somit ein Kündigungsgrund ist, ist Dir aber schon bewusst? Du rufst also zum vorsätzlichen Vertragsbruch auf, ohne Deine Opfer darüber zu informieren... Ganz grosses Kino.

Mein Tip: Erst denken, dann...
 
Mein Tip: Erst denken, dann...

Ich schätze deine fachlichen Kommentare i.d.R. sehr. Deine plumpe Polemik ist aber teilweise dann doch etwas störend. ;)

Ich habe auf diese Art und Weise bereits ca. 20 vServer bei unterschiedlichen Hostern getestet, ohne auch nur die kleinste Beanstandung. Und da bin ich ja auch nicht der Einzige, der das so macht:

Siehe z.B.: http://virtualist.de/
 
Sollte dein System aufgrund hoher Aufrufe gut ausgelastet sein, kann ich dir den Hiawatha Webserver empfehlen.

Dieser braucht deutlich weniger Ressourcen als der Indianer, bei deutlich besserer Performance ;)
 
Spamvertising

Sollte dein System aufgrund hoher Aufrufe gut ausgelastet sein, kann ich dir den Hiawatha Webserver empfehlen.
Kannst Du das Spamvertising bitte mal lassen?

Soweit ich den Thread verfolgt habe, hat hier niemand nach einer Apache-Alternative gefragt.
 
Kannst Du das Spamvertising bitte mal lassen?

Soweit ich den Thread verfolgt habe, hat hier niemand nach einer Apache-Alternative gefragt.

Ich sehe meinen Beitrag nich als Spamvertising an, lediglich stelle ich eine noch nicht sehr bekannte Alternative dar.

Wenn du ein Problem damit hast, kannst du dich ja gerne an das Serversupportforum wenden, es finden sich sicherlich Personen die meine gut gemeinten Ratschläge entfernen.
 
Ich sehe meinen Beitrag nich als Spamvertising an, lediglich stelle ich eine noch nicht sehr bekannte Alternative dar.
Das dürften die Leute, die mir mehrmals pro Woche eine noch nicht sehr bekannte Methode vorstellen, illegal rezeptpflichtige Medikamente zu beziehen, ähnlich verargumentieren. :D

Wenn du ein Problem damit hast, kannst du dich ja gerne an das Serversupportforum wenden, es finden sich sicherlich Personen die meine gut gemeinten Ratschläge entfernen.
Krieg Dich mal wieder ein, benutze die Forensuche, suche nach dem Namen des Projektes. Dann zählst Du mal die Personen, die außer Dir die Software empfehlen und schaust Dir nochmal die Situation an, in der die Software empfohlen wurde.

Wenn jemand nach einem schlanken, unter Sicherheitsaspekten entwickelten Webserver sucht, passt Deine Empfehlung ja möglicherweise (auch wenn ich da thttpd, nginx oder fefes gatling bevorzugen würde), ansonsten aber eher nicht.
 
Last edited by a moderator:
Falls es noch jemanden interessiert, ich habe den Server nun unter Kontrolle gebracht. Wie bereits erwähnt hat die Installation von eAccelerator schon extrem viel gebracht. Dann habe ich in der MySQL slow log einen SQL gesehen der extrem lastig war (WHERE PrimaryKey IN (SUBSELECT) -> Kein Key verwendet). Diesen SQL habe ich dann noch optimiert und nun ist Load maximal auf 0,5, auch bei vielen Besuchern gleichzeitig.
 
Back
Top