Hallo Forum,
Ich habe momentan folgenden vServer
Auf dem Server läuft meine SQL-Datenbank mit ein paar permanent laufenden PHP-Jobs, die ich parallel laufen lasse und so justiert habe, dass der CPU-Idle-Wert in top permanent zwischen 0.10 und 0.20 verbleibt, falls zusätzliche Aufgaben wie cron oder apache dazwischenkommen. MySQL hat CPU-Werte zwischen 50 % und 350 %, was auf einem Vierkernprozessor und durchschnittlich 4 parallel laufenden Jobs für mich Sinn ergibt.
Nach zwei Tagen Test- und Entwicklungsbetrieb erreichte mich folgende Nachricht von meinem Hoster:
Zitat:
Sehr geehrte/r (...),
wir haben festgestellt, das ihr VPS mit der IP-Adresse xxx.xxx.xxx.xxx seit einigen Tagen eine permanent Hohe CPU Auslastung
von 300 - 400% aufweist d.h. es werden permanent 3 - 4 CPU-Kerne zu 100% ausgelastet.
Wir möchten Sie bitten, die Prozesse auf ihrem vServer zu kontrollieren und die CPU Auslastung zu reduzieren.
Daraufhin habe ich ihm geantwortet:
Zitat:
Hallo (Herr/Frau...),
dafür habe ich auch einen VPS mit 4 vCores eingerichtet. Die Auslastung ist exakt austariert auf 75-80 % CPU und eine Load von 4. Sind die Werte, die ich in im System sehe nicht die meines virtuellen Servers? Der Hypervisor sollte die Last doch eigentlich automatisch fair auf alle Systeme aufteilen bzw. meine maximalen CPU-Zyklen limitieren. Ich verstehe das Problem nicht.
Falls ich einen Denkfehler gemacht habe informieren Sie mich bitte, dann bin ich gerne bereit, die Last zu reduzieren.
Die Antwort meines Hosters darauf ist zwar außerordentlich ausführlich (Lob dafür), aber inhaltlich für mich weder schlüssig noch zufriedenstellend:
Zitat:
Sie liegen hier leider nicht ganz richtig. Jeder vServer Tarif hat andere Werte, auch in der Verteilung der möglichen CPU-Nutzung. Der Hypervisor verteilt die CPU Leistung auf alle VPS nach der eingestellten Priorität.
Dazu ein einfaches Beispiel: Angenommen es gibt 4 vServer Tarife:
- VPS 1
- VPS 2
- VPS 3
- VPS 4
die Tarife erhalten dann unterschiedliche Prioritäten für CPU usw. als Beispiel:
- VPS 1 = CPU PRIO 1
- VPS 2 = CPU PRIO 2
- VPS 3 = CPU PRIO 3
- VPS 4 = CPU PRIO 4
Angenommen der Hostserver hat nur 4 CPU Kerne und Sie haben nun den Tarif "VPS 4" mit CPU PRIO 4 und belegen volle 3 - 4 Kerne zu 100% und das 24/7, so steigt die Load des gesamten Host durch die volle CPU Auslastung in extreme Höhen an.
Da Sie die CPU Priorität 4 haben, erhalten Sie bevorzugt die CPU Leistung gegenüber den anderen vServern auf dem Host. Kunden die im Tarif VPS 1, VPS 2 und VPS 3 sind haben die niedrigere CPU Priorität und haben so keine Chance etwas von der Leistung ab zu bekommen. Eine gleiche Verteilung würde hier nur stattfinden, wenn ein weitere Kunde im Tarife VPS 4 ist, so würde die Leistung zwischen diesen beiden aufgeteilt werden.
Eine Auslastung der CPU zu 100% bzw. von mehreren Kernen zu 100% ist generell soweit bei keinen Anbieter 24/7 Dauerhaft erlaubt, da es alle anderen Kunden auf dem selben Server einschränken würde.
Wenn Sie einen der Kerne ihres vServers zu 100% Auslasten, so nutzen Sie in diesem Moment auch einen ganzen Kern des Hostservers für sich alleine. Wenn eine CPU Auslastung zu 100% für einen gewisse Zeit Periode
Anhält, so stellt dies kein Problem da und durch die CPU Priorität soll ihr VPS diese Leistung dann auch bevorzugt in diesem Moment erhalten können. Jedoch eben nicht dauerhaft 24/7. Da in ihrem Fall entsprechend
ganze 3 - 4 Kerne zu 100% belegt werden, sind wir hier auf Sie zukommen mit der Bitte die CPU Last zu reduzieren. Wenn es z. B. nur 1 Kern gewesen wäre, der zwischen 50 - 100% ausgelastet wird, hätten wir uns
entsprechend noch nicht direkt gemeldet.
Jetzt zu meiner Frage:
Wer hat Recht?
Aus meiner Sicht ist es nur logisch, dass der Host (Hypervisor) auf 100 % CPU-Last geht, denn dafür ist die CPU gebaut und dafür wird sie vermietet, nicht zum idlen. Sobald ein anderer vServer ebenfalls Leistung benötigt sollte die von mir beanspruchte CPU-Leistung doch einfach auf das mir zustehende Minimum reduziert werden, sprich:
Mein vServer sollte einfach langsamer werden.
Folge ich der
Sicht meines Hosters, könnte ich ja niemals meinen vServer zufriedenstellend betreiben, da ich niemals wissen kann, wann eine Lastspitze den Hypervisor voll auslastet und andere Kunden darunter leiden.
Genau das zu verhindern sollte doch Aufgabe des Hypervisors sein, nicht die des Hosters und schon gar nicht die des Kunden.
Ich habe zu diesem Thema heute viel gegoogled und bin auf
diese Aussage eines anderen Hosters gestoßen, die den Sachverhalt so ausdrückt, wie ich ihn bislang kannte und für schlüssig empfinde:
Zitat:
Die CPU-Ressourcen werden von allen geteilt.
Dabi hat jeder aber eine Mindestzuweisung, die er aber natürlich nur dann bekommt, wenn er sie braucht. Und diese Mindestzuweisung tritt auch nur dann in Kraft, wenn jeder das System voll ausreizt.
Da aber kaum jemand seine ihm zugewiesenen CPU-Ressourcen ausschöpft, wird geteilt. D.h., dass du zum jetzigen Zeitpunkt wahrscheinlich eine Leistung von ca. "14GHz" in Anspruch nehmen kannst, deutlich mehr als dir zugewiesen.
Und wenn du kaum CPU-Ressourcen brauchst, kriegt jemand anders deine bei Bedarf.
Nur, wenn jeder Bedarf hat, kriegt jeder seine ihm zugewiesenen Ressourcen. D.h., dass für dich bis zu deinem dir zugewiesenen Limit CPU-Ressourcen im Ernstfall freigemacht werden, du kannst aber mehr in Anspruch nehmen, wenn die keiner braucht.
-> Bingo. So kenne ich das.
Dazu würden mich Eure Meinungen interessieren.
Was soll ich meinem Hoster jetzt antworten?