Willkommen in der Welt von Linux, wo Innovation keine Grenzen kennt. Entdeckt das ungenutzte Potenzial von Linux durch seine vielfältigen Merkmale, Anwendungen und Vorteile. Von Servern bis hin zu Desktops, eingebetteten Systemen und Cloud-Computing steht Linux für Vielseitigkeit und Zuverlässigkeit. Nach diesem Video kennt Ihr die vielen Einsatzbereiche von Linux und seine Vorteile. Erfahrt, warum Linux das bevorzugte Betriebssystem für Millionen von Menschen weltweit ist. Viel Spaß!
Willkommen in der Welt von Linux, wo Innovation keine Grenzen kennt. Entdeckt das ungenutzte Potenzial von Linux durch seine vielfältigen Merkmale, Anwendungen und Vorteile. Von Servern bis hin zu Desktops, eingebetteten Systemen und Cloud-Computing steht Linux für Vielseitigkeit und Zuverlässigkeit. Nach diesem Video kennt Ihr die vielen Einsatzbereiche von Linux und seine Vorteile. Erfahrt, warum Linux das bevorzugte Betriebssystem für Millionen von Menschen weltweit ist. Viel Spaß!
Red Hat hat die allgemeine Verfügbarkeit von Red Hat Enterprise Linux 9.4 bekannt gegeben, das als viertes Update der neuesten Betriebssystemserie von Red Hat Enterprise Linux 9 neue und verbesserte Funktionen einführt. Zu den Highlights von Red Hat Enterprise Linux 9.4 gehören die Möglichkeit, benutzerdefinierte Dateien für das SCAP-Sicherheitsprofil einem Blueprint hinzuzufügen, die Unterstützung für...
Red Hat hat die allgemeine Verfügbarkeit von Red Hat Enterprise Linux 9.4 bekannt gegeben, das als viertes Update der neuesten Betriebssystemserie von Red Hat Enterprise Linux 9 neue und verbesserte Funktionen einführt. Zu den Highlights von Red Hat Enterprise Linux 9.4 gehören die Möglichkeit, benutzerdefinierte Dateien für das SCAP-Sicherheitsprofil einem Blueprint hinzuzufügen, die Unterstützung für...
Red Hat gab die allgemeine Verfügbarkeit seiner Linux Business Server Lösung Red Hat Enterprise Linux (RHEL) 9.3 als neuestes Update seiner Red Hat Enterprise Linux 9 Betriebssystemserie bekannt. Red Hat Enterprise Linux 9.3 kommt etwa fünf Monate nach Red Hat Enterprise Linux 9.2 und ist das dritte Wartungsupdate für Red Hat Enterprise Linux 9 Serie....
Red Hat gab die allgemeine Verfügbarkeit seiner Linux Business Server Lösung Red Hat Enterprise Linux (RHEL) 9.3 als neuestes Update seiner Red Hat Enterprise Linux 9 Betriebssystemserie bekannt. Red Hat Enterprise Linux 9.3 kommt etwa fünf Monate nach Red Hat Enterprise Linux 9.2 und ist das dritte Wartungsupdate für Red Hat Enterprise Linux 9 Serie....
Red Hat gab die allgemeine Verfügbarkeit seiner Linux Business Server Lösung Red Hat Enterprise Linux (RHEL) 9.2 als neuestes Update seiner Red Hat Enterprise Linux 9 Betriebssystemserie bekannt. Red Hat Enterprise Linux 9.2 kommt etwa sechs Monate nach Red Hat Enterprise Linux 9.1 und ist das zweite Wartungsupdate für Red Hat Enterprise Linux 9 Serie....
Red Hat gab die allgemeine Verfügbarkeit seiner Linux Business Server Lösung Red Hat Enterprise Linux (RHEL) 9.1 als neuestes Update seiner Red Hat Enterprise Linux 9 Betriebssystemserie bekannt. Red Hat Enterprise Linux 9.1 kommt etwa sechs Monate nach Red Hat Enterprise Linux 9 und ist das erste Wartungsupdate für Red Hat Enterprise Linux 9 Serie....
Red Hat gab die allgemeine Verfügbarkeit seiner Linux Business Server Lösung Red Hat Enterprise Linux (RHEL) 8.7 als neuestes Update seiner Red Hat Enterprise Linux 8 Betriebssystemserie bekannt. Red Hat Enterprise Linux 8.7 kommt etwa sechs Monate nach Red Hat Enterprise Linux 8.6 und ist das siebte Wartungsupdate für Red Hat Enterprise Linux 8 Serie....
Normalerweise werden PHP-Skripte zur Laufzeit kompiliert. Das heißt, wenn jemand eine PHP-Seite wie WordPress aufruft, wird der PHP-Quelltext (die PHP-Datei) gelesen und vom PHP-Interpreter in sogenannten Bytecode (vorkompilierter Code) umgewandelt. Dieser Bytecode wird an eine virtuelle Maschine (die Zend Engine) übergeben, die daraus maschinenlesbaren Code erzeugt. Die Zend Engine stellt dabei eine einheitliche Laufzeitumgebung für verschiedene CPU-Architekturen und Betriebssysteme bereit.
Der Bytecode wird daraufhin verworfen und muss bei jedem Aufruf der Webseite neu generiert werden. Dies kostet Rechenzeit und verzögert den Aufruf der Webseite.
Durch die Nutzung von OPCache wird der Bytecode für die spätere Verwendung zwischengespeichert, so dass er nicht bei jedem Aufruf der Webseite neu erzeugt werden muss. Dies kann die Ladezeit von WordPress (oder anderen PHP-Projekten) spürbar beschleunigen.
Der Preis dafür ist, dass zum Zwischenspeichern des vorkompilierten Bytecodes RAM und/oder Festplattenspeicher benötigt wird. Außerdem werden (abhängig von der OPcache Knfiguration) Änderungen am PHP-Code unter Umständen nicht sofort sichtbar, da sich noch eine alte Version im Cache befindet.
OPcache aktivieren und konfigurieren
Um OPCache auf einem Ubuntu-Server zu nutzen, muss das Paket php7.2-opcache installiert werden. Anschließend kann der Cache über die php.ini aktiviert werden. Die php.ini befindet sich bei Ubuntu und der Verwendung von PHP als Apache-Modul unter /etc/php/7.2/apache2/php.ini. Bei Verwendung von PHP-FPM, beispielsweise mit NGINX, findet man die Konfigurationsdatei unter /etc/php/7.2/fpm/php.ini
In der php.ini scrollt man bis zum Abschnitt [opcache].
Um OPcache zu aktivieren muss die Zeile
;opcache.enable=0
abgeändert werden in
opcache.enable=1
Außerdem können und sollten weitere Einstellungen vorgenommen werden. In untenstehender Tabelle sind einige Option beschrieben, die ich für die wichtigsten halte.
Option
Bedeutung
opcache.memory_consumption=256
Die Menge an Speicherplatz die OPcache zur Verfügung steht, in Megabytes.
opcache.interned_strings_buffer=16
Speicherplatz der für string interning zur Verfügung steht, ebenfalls in Megabytes.
opcache.max_accelerated_files=16229
Die maximale Anzahl an Schlüsseln (und damit PHP-Skripte) die gespeichert werden können. Der Wert sollte größer als die Anzahl vorhandener Skripte sein. Der tatsächlich verwendete Wert wird aus einem festen Set aus Primzahlen gewählt (223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987). Es wird die Primzahl verwendet, die größer oder gleich dem gesetzten Wert ist. Gibt man beispielsweise als Wert 10000 an, werden tatsächlich 16229 Schlüssel gecached. Man kann also auch direkt eine der angegebenen Primzahlen als Wert setzen.
opcache.max_wasted_percentage=10
Prozentsatz an verschwendetem Speicherplatz, der akzeptiert wird, becor der Cache komplett geleert wird. “Waste” entsteht, wenn sich der Code ändert, während OPcache läuft. Der alte Cache-Eintrag wird dabei als “waste” markiert.
opcache.validate_timestamps=1
Legt fest, ob OPcache in regelmäßigen Abständen prüfen soll, ob sich der PHP-Code in einer Datei geändert hat. Wenn dies deaktiviert ist, muss nach jeder Änderung am Code (z.B. ein WordPress Update) ein Reset von OPcache durchgeführt werden, oder OPcache neu gestartet werden. Wer WordPress-Updates automatisch einspielen lässt, sollte die Option aktivieren. Wer die manuell macht, kann die Option deaktivieren und zusätzlich Rechenzeit sparen.
opcache.revalidate_freq=300
Zeit in Sekunden, nach der überprüft wird ob sich der PHP-Code in einen Skript keändert hat. “0” bedeutet, dass die Prüfung bei jedem Aufruf vorgenommen wird.
opcache.file_cache=/path/to/cache
OPcache kann Daten im Ram und/oder auf einem Datenträger speichern. Damit kann OPcache z.B. auch in Shared-Hosting Umgebungen genutzt werden. Auf dem eigenen Server hat die Nutzung dieser Option den Vorteil, dass bereits erzeugte Daten nach einem Neustart des Servers nicht verloren gehen. Das Verzeichnis muss vom PHP-Prozess beschrieben werden können.
opcache.file_cache_only=0
Legt fest ob OPcache seine Daten nur auf dem Datenträger speichert (1) oder ob Daten im RAM und zusätzlich auf dem Datenträger gespeichert werden (0)
Wenn der Server von mehreren Benutzern verwendet wird, sind evtl. die Optionen opcache.validate_permission und opcache.validate_root von Bedeutung, die standardmäßig deaktiviert sind. Erstere prüft, ob der User überhaupt Leseberechtigung für das entsprechende Skript hat. Dies verhindert, dass zwischengespeicherte Daten an andere Benutzer geleaked werden. Zweitere verhindert Namenskollisionen bei verschiedenen chroot Umgebungen.
Damit Änderungen wirksam werden, muss Apache, bzw. PHP-FPM neu gestartet werden. Dabei wird außerdem der Cache geleert.
Überprüfen ob OPcache genutzt wird
Eine schöne Möglichkeit zum Steuern von OPcache und zum prüfen, ob OPcache überhaupt genutzt wird ist das Tool opcache-gui das auf Github zu finden ist. Es handelt sich dabei um ein PHP-Skript, das den verwendeten Speicherplatz, die Anzahl der zwischengespeicherten Skripte uvm. anzeigt. Da sich außerdem verschiedene Funktionen von OPcache steuern lassen, sollte man den Zugriff auf das Skript mit einem Passwort sichern.
Um opcache-gui zu nutzen, muss lediglich das PHP-File in den eigenen Webverzeichnis kopiert werden und über den Webbrowser aufgerufen werden.
Wer opcache-gui dauerhaft einsetzen will, der sollte den Zugang unbedingt mit einem Passwortschutz versehen.
Systemd wird häufig kritisiert, weil es größer und komplexer als bisherige Init-Systeme ist. Dafür bringt Systemd aber auch eine ganze Reihe an Tools zur Fehlerbehebung und Systemanalyse mit.
Eines davon ist systemd-analyze, mit dem sich der Bootvorgang des Systems darstellen und analysieren lässt. Die Ausgabe kann dabei textbasiert auf der Kommandozeile erfolgen, oder auch als svg-Grafik exportiert werden.
Bootvorgang mit systemd-analyze untersuchen
Ein simpler Aufruf von
systemd-analyze
zeigt eine Übersicht, welche Systembestandteile wie lange zum booten benötigen. Damit erhält man folgende Ausgabe.
Sofern das Betriebssystem auf einem Computer mit UEFI installiert ist, bekommt man auch die Startzeit des UEFI (firmware) präsentiert. Anschließend wird die Startzeit des Bootloaders ausgegeben (loader). Dass diese bei mir mit knapp 32 Sekunden angegeben ist, liegt (denke ich) an der Wartezeit im Grub Auswahlbildschirm. Anschließend werden die Startzeiten der systemnahen Komponenten (kernel) und der Benutzerumgebung (userland) angegeben.
Eine genauere Ausgabe erhält man mit dem Befehl
systemd-analyze blame
Damit erhält man eine Auflistung aller beim booten gestarteten Dienste, sortiert nach ihrer Startzeit. Damit lassen sich Dienste, die das starten verzögern schnell identifizieren.
Außerdem lässt sich die Ausgabe auch als SVG-Grafik exportieren. Damit erhält man noch detailliertere Ergebnisse. der Export erfolgt mit
systemd-analyze plot > boot.svg
Allerdings ist die exportierte Grafik ziemlich groß, so dass man viel scrollen muss um diese zu analysieren. Horizontal wird dabei die Startzeit in Sekunden angegeben. Vertikal werden die einzelnen Dienste aufgelistet.
Die Ausgaben von systemd-analyze sind nicht nur interessant, sondern ermöglichen auch, auf den ersten Blick zu erkennen, warum der Bootvorgang so lange dauert. Dienste, die den Bootvorgang verlangsamen lassen sich damit direkt identifizieren, wo ansonsten möglicherweise eine langwierige Fehlersuche oder Analyse notwendig wäre.