Shared Hosting: Wie schätzen sie die Server-CPU-Auslastung ein?

602
Roman Matveev

Ich verwende mehrere Shared-Hosting-Dienste und habe mich oft gefragt: Wie berechnen sie diese "CPU-Sekunden"?

Zum Beispiel einer, der mich auf 300.000 Sekunden / Monat, 10.000 Sekunden / 24h und 2.000 Sekunden / 2h begrenzt. Die Sekunden können jedoch erheblich von der Hardware des Hosters und der Software abhängen (sowohl von meinen Anwendungen als auch vom Betriebssystem des Hosters).

Daher bin ich mir meistens sicher, dass ich, wenn ich eine komplizierte und wahrscheinlich schlecht optimierte SQL-Anforderung mit einer Dauer von 10 Sekunden ausführen werde, wahrscheinlich genau 10 CPU-Sekunden "ausgeben" wird. Keine Fragen.

Aber wenn ich eine Verzögerung in ein PHP-Skript ( <?php sleep(10); ?>) stecke, kostet es mich 10 CPU-Sekunden. Oder wenn ich externe Webseiten herunterlade und dies für 3 Sekunden dauert - wird es in diesem Fall auch so sein?

Hauptsächlich interessiere ich mich für den file_get_contents()CPU-Verbrauch von PHP .

0

1 Antwort auf die Frage

1
Kevin Panko

Dies geschieht durch den Kernel-Scheduler. Wenn ein Prozess zur Ausführung geplant ist, wird die Zeit, zu der er ausgeführt wird, zur Gesamtzahl für diesen Prozess addiert. Der Scheduler wählt einen Prozess aus, der je nach Betriebssystem und Konfiguration 100 bis 1000 Mal pro Sekunde ausgeführt wird. (Diese Zeit ist die Zeitscheibe.)

A benötigt sleep(10)weniger als eine Mikrosekunde CPU-Zeit, da der Prozess angehalten wird. Der Scheduler wählt dann einen anderen Prozess aus, um mit der Ausführung zu beginnen (oder wenn es keinen Prozess gibt, der betriebsbereit ist, kann sich die CPU im Leerlauf befinden). Für den in 10Sekunden ablaufenden Prozess wird dann ein Timer erstellt . Zu diesem Zeitpunkt wählt der Scheduler dann den Prozess aus, der in der nächsten verfügbaren Zeitscheibe auf der CPU ausgeführt wird.

Bei Vorgängen, die Datei-E / A-Vorgänge betreffen, wird der Prozess ebenfalls angehalten, während die CPU auf die Bereitschaft der Festplatte oder des Netzwerks wartet, sodass sie nicht viel CPU-Zeit beansprucht.

Operationen, die CPU-Zeit in Anspruch nehmen, wären solche, die Variablen lesen / schreiben, numerische mathematische Operationen ausführen, Stringvariablen, Schleifen und if-Anweisungen erstellen und scannen.

Es gibt keine einfache Formel, um zu bestimmen, wie viel CPU-Zeit von einem bestimmten Programm verwendet wird. Das hängt davon ab, was genau das Programm macht. Die typische Webseite, die nur eine Datenbank liest / schreibt, benötigt nicht viel CPU-Zeit.