MediaWiki/Performance: Unterschied zwischen den Versionen
| (12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 2: | Zeile 2: | ||
== Beschreibung == | == Beschreibung == | ||
; Bereiche | |||
* [[Caching]] | |||
* [[Memcached]] | |||
* [[Redis]] | |||
* Datenbankoptimierung | |||
* Erweiterungen | |||
**Deaktivieren, wenn nicht notwendig | |||
; Wichtige Maßnahmen | |||
* Object-Caching | |||
* Varnish für anonyme Nutzer | |||
* Optimieren der MySQL/MariaDB-Datenbank | |||
* Pflege einer effizienten Job-Queue | |||
Die Wikimedia Performance-Initiative überwacht diese Faktoren kontinuierlich, um eine hohe Benutzererfahrung zu gewährleisten | |||
; Ressourcen | ; Ressourcen | ||
[[Webserver]] und [[PHP]] genügend [[Arbeitsspeicher]] und [[CPU-Kapazität]] zuweisen | [[Webserver]] und [[PHP]] genügend [[Arbeitsspeicher]] und [[CPU-Kapazität]] zuweisen | ||
| Zeile 14: | Zeile 30: | ||
* [[OPcache]] | * [[OPcache]] | ||
* Objekt-Caching | * Objekt-Caching | ||
* APCu/Memcached installieren | * APCu/Memcached installieren | ||
* ressourcenintensive Bot-Crawler blockieren | * ressourcenintensive Bot-Crawler blockieren | ||
| Zeile 27: | Zeile 43: | ||
== PHP-Caching == | == PHP-Caching == | ||
; PHP-Caching aktivieren (unbedingt erforderlich) | ; PHP-Caching aktivieren (unbedingt erforderlich) | ||
PHP kompiliert Code standardmäßig bei jeder Seitenanfrage neu | PHP kompiliert Code standardmäßig bei jeder Seitenanfrage neu | ||
* Zwischenspeichern dieser Skripte reduziert die CPU-Auslastung | * Zwischenspeichern dieser Skripte reduziert die CPU-Auslastung | ||
* https://www.mediawiki.org/wiki/Manual:Varnish_caching | * https://www.mediawiki.org/wiki/Manual:Varnish_caching | ||
| Zeile 62: | Zeile 78: | ||
== Bots und Crawler == | == Bots und Crawler == | ||
; Bots und Crawler optimieren | ; Bots und Crawler optimieren | ||
Aggressive Suchmaschinen-Bots können dynamische Seiten (wie <code>api.php</code> oder <code>index.php?action=history</code>) indexieren und Ihre CPU überlasten | Aggressive Suchmaschinen-Bots können dynamische Seiten (wie <code>api.php</code> oder <code>index.php?action=history</code>) indexieren und Ihre CPU überlasten | ||
* https://github.com/bitnami/charts/issues/3138 | * https://github.com/bitnami/charts/issues/3138 | ||
* https://serverfault.com/questions/397482/need-help-trouble-shooting-high-cpu-usage-by-php-fpm | * https://serverfault.com/questions/397482/need-help-trouble-shooting-high-cpu-usage-by-php-fpm | ||
Erstelle oder aktualisiere eine strenge <code>robots.txt</code>-Datei in deinem Hauptverzeichnis, um nicht-kanonische URLs und Systemseiten zu blockieren | Erstelle oder aktualisiere eine strenge <code>robots.txt</code>-Datei in deinem Hauptverzeichnis, um nicht-kanonische URLs und Systemseiten zu blockieren | ||
; Beispielregeln | ; Beispielregeln | ||
text User-agent:* | text User-agent:* | ||
Disallow: /wiki/Special: | Disallow: /wiki/Special: | ||
Disallow: /w/api.php Disallow: /w/index.php | Disallow: /w/api.php Disallow: /w/index.php | ||
| Zeile 101: | Zeile 117: | ||
; PHP-FPM / FastCGI optimieren | ; PHP-FPM / FastCGI optimieren | ||
Wenn [[PHP-FPM]]-Prozesse übermäßig viel CPU-Leistung beanspruchen | Wenn [[PHP-FPM]]-Prozesse übermäßig viel CPU-Leistung beanspruchen | ||
* Laufzeit des Prozesses bgrenzen, bevor er recycelt wird, um Speicher freizugeben | * Laufzeit des Prozesses bgrenzen, bevor er recycelt wird, um Speicher freizugeben | ||
** [[mediawikiwiki:Topic:U1sl12b4w1gkbh2k]] | ** [[mediawikiwiki:Topic:U1sl12b4w1gkbh2k]] | ||
** https://serverfault.com/questions/397482/need-help-trouble-shooting-high-cpu-usage-by-php-fpm | ** https://serverfault.com/questions/397482/need-help-trouble-shooting-high-cpu-usage-by-php-fpm | ||
| Zeile 120: | Zeile 136: | ||
<noinclude> | <noinclude> | ||
== Maßnahmen zur Leistungssteigerung == | |||
=== Caching === | |||
{| | |||
|- | |||
| [[Objekt-Cache]] || Verwendung von Memcached oder Redis ist essenziell für die Zwischenspeicherung von Datenbankabfragen | |||
|- | |||
| [[Parser-Cache]] || wgParserCacheType sollte auf ein schnelles Medium (z. B. Redis) eingestellt sein | |||
|- | |||
| [[Varnish]] || Der Einsatz von Varnish-HTTP-Cache vor dem Webserver (wie bei Wikipedia) ist hocheffizient für anonyme Zugriffe | |||
|- | |||
| [[Lokaler Cache]] || Verwendung von APCu für lokale Zwischenspeicherung auf dem Server | |||
|} | |||
=== Datenbank-Optimierung === | |||
* Regelmäßige Wartung, Indizierung und ggf. Trennung von Web- und Datenbankservern | |||
=== Extensions & Parser === | |||
* Unnötige Erweiterungen deaktivieren, da diese oft die Hauptursache für Verlangsamungen sind | |||
* Parser-Profiling-Metriken (wgPageParseReport) nutzen, um langsame Seiten zu identifizieren | |||
=== Konfiguration === | |||
* $wgMainCacheType und $wgSessionCacheType korrekt auf einen zentralen Cache (z. .B. Memcached) einstellen, besonders bei mehreren Webservern | |||
* Job-Queue optimieren, um Hintergrundaufgaben nicht die Live-Performance beeinträchtigen zu lassen | |||
=== Leistungsüberwachung === | |||
* Die Wikimedia Performance-Initiative bietet Tools zur Analyse und Verbesserung | |||
* Die Extension [https://www.mediawiki.org/wiki/Help:Extension:PerformanceInspector PerformanceInspector] hilft, Engpässe bei Parser-Metriken, Modulen und Bildern zu erkennen | |||
* Regelmäßige Leistungstests (Performance Reviews) sind bei umfangreichen Änderungen empfehlenswert | |||
Durch diese Maßnahmen können Seitenladezeiten, insbesondere bei großen Wikis, von über einer Sekunde auf wenige Millisekunden gesenkt werden | |||
== Anhang == | == Anhang == | ||
| Zeile 131: | Zeile 178: | ||
=== Dokumentation === | === Dokumentation === | ||
<!-- | <!-- | ||
; Man-Page | ; Man-Page | ||
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)] | # [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)] | ||
; Info-Pages | ; Info-Pages | ||
--> | --> | ||
| Zeile 140: | Zeile 187: | ||
==== Projekt ==== | ==== Projekt ==== | ||
==== Weblinks ==== | ==== Weblinks ==== | ||
# https://www.mediawiki.org/wiki/Manual:Performance_tuning | |||
# https://www.mediawiki.org/wiki/Manual:Varnish_caching | # https://www.mediawiki.org/wiki/Manual:Varnish_caching | ||
[[Kategorie:MediaWiki/Verwaltung]] | [[Kategorie:MediaWiki/Verwaltung]] | ||
</noinclude> | </noinclude> | ||
Aktuelle Version vom 19. Oktober 2026, 15:58 Uhr
MediaWiki/Performance - Leistungsoptimierungen für MediaWiki
Beschreibung
- Bereiche
- Wichtige Maßnahmen
- Object-Caching
- Varnish für anonyme Nutzer
- Optimieren der MySQL/MariaDB-Datenbank
- Pflege einer effizienten Job-Queue
Die Wikimedia Performance-Initiative überwacht diese Faktoren kontinuierlich, um eine hohe Benutzererfahrung zu gewährleisten
- Ressourcen
Webserver und PHP genügend Arbeitsspeicher und CPU-Kapazität zuweisen
- Caching-Tools
- CPU-Auslastung reduzieren
- Alternative Webserver
Nginx oder Lighttpd
- Die Verwendung von Nginx oder Lighttpd als Webserver anstelle von Apache kann die Leistung stark frequentierter Websites erheblich verbessern
- Links
- Alle Optionen für das Caching
- https://serverfault.com/questions/397482/need-help-trouble-shooting-high-cpu-usage-by-php-fpm
PHP-Caching
- PHP-Caching aktivieren (unbedingt erforderlich)
PHP kompiliert Code standardmäßig bei jeder Seitenanfrage neu
- Zwischenspeichern dieser Skripte reduziert die CPU-Auslastung
- https://www.mediawiki.org/wiki/Manual:Varnish_caching
- https://www.mediawiki.org/wiki/Manual:Performance_tuning
- OPcache
OPcache in der php.ini-Datei aktivieren
opcache.enable=1opcache.memory_consumption=128
- APCu
APCu-PHP-Erweiterung installieren
- schnelles, lokales Objekt-Caching
- https://www.mediawiki.org/wiki/Manual:Performance_tuning/ca
- https://wiki.centos-webpanel.com/improve-website-performance
- https://www.mediawiki.org/wiki/Manual:Varnish_caching
Objekt- und Hauptcache
- MediaWiki-Objekt- und Hauptcache konfigurieren
Datenbankabfragen zwischensoeichern
- LocalSettings.php
$wgMainCacheType = CACHE_ACCEL;
$wgParserCacheType = CACHE_ACCEL;
$wgSessionCacheType = CACHE_ACCEL;
- mediawikiwiki:Manual:$wgMainCacheType
- https://hexshift.medium.com/step-by-step-guide-to-optimizing-mediawiki-performance-with-caching-and-profiling-391b5203d166
- https://lists.wikimedia.org/hyperkitty/list/mediawiki-l@lists.wikimedia.org/thread/S7YWAMM6BHTZBOK7ZPQ2ZBKRSML42OPP/
- https://hexshift.medium.com/step-by-step-guide-to-optimizing-mediawiki-performance-with-caching-and-profiling-391b5203d166
Bots und Crawler
- Bots und Crawler optimieren
Aggressive Suchmaschinen-Bots können dynamische Seiten (wie api.php oder index.php?action=history) indexieren und Ihre CPU überlasten
- https://github.com/bitnami/charts/issues/3138
- https://serverfault.com/questions/397482/need-help-trouble-shooting-high-cpu-usage-by-php-fpm
Erstelle oder aktualisiere eine strenge robots.txt-Datei in deinem Hauptverzeichnis, um nicht-kanonische URLs und Systemseiten zu blockieren
- Beispielregeln
text User-agent:* Disallow: /wiki/Special: Disallow: /w/api.php Disallow: /w/index.php
Erweiterungen
- Ressourcenintensive Erweiterungen anpassen
Komplexe Erweiterungen wie Semantic MediaWiki (SMW) können von Seiten zu erheblicher Serverbelastung führen
- Abfrage-Caching
Abfrage-Caching bei SMW aktivieren
- verhindert, dass komplexe semantische Abfragen bei jedem Besuch neu berechnet werden
LocalSettings.php
$smwgEnableCache = true;
Zähler
- Seitenzähler deaktivieren
Erfassung der Seitenaufrufen kann auf stark frequentierten Seiten zu einem sprunghaften Anstieg der CPU-Auslastung führen
Werden keine Seitenstatistiken benötigt, kann der Seitenzähler deaktiviert werden
- LocalSettings.php
$wgDisableCounters = true;
PHP-FPM / FastCGI
- PHP-FPM / FastCGI optimieren
Wenn PHP-FPM-Prozesse übermäßig viel CPU-Leistung beanspruchen
- Laufzeit des Prozesses bgrenzen, bevor er recycelt wird, um Speicher freizugeben
- php-fpm.conf
pm.max_requests = 500
- Skalierung
Anleitung zur Skalierung
- Erweiterungen
Welche Erweiterungen (wie Semantic MediaWiki) sind aktiv?
Maßnahmen zur Leistungssteigerung
Caching
| Objekt-Cache | Verwendung von Memcached oder Redis ist essenziell für die Zwischenspeicherung von Datenbankabfragen |
| Parser-Cache | wgParserCacheType sollte auf ein schnelles Medium (z. B. Redis) eingestellt sein |
| Varnish | Der Einsatz von Varnish-HTTP-Cache vor dem Webserver (wie bei Wikipedia) ist hocheffizient für anonyme Zugriffe |
| Lokaler Cache | Verwendung von APCu für lokale Zwischenspeicherung auf dem Server |
Datenbank-Optimierung
- Regelmäßige Wartung, Indizierung und ggf. Trennung von Web- und Datenbankservern
Extensions & Parser
- Unnötige Erweiterungen deaktivieren, da diese oft die Hauptursache für Verlangsamungen sind
- Parser-Profiling-Metriken (wgPageParseReport) nutzen, um langsame Seiten zu identifizieren
Konfiguration
- $wgMainCacheType und $wgSessionCacheType korrekt auf einen zentralen Cache (z. .B. Memcached) einstellen, besonders bei mehreren Webservern
- Job-Queue optimieren, um Hintergrundaufgaben nicht die Live-Performance beeinträchtigen zu lassen
Leistungsüberwachung
- Die Wikimedia Performance-Initiative bietet Tools zur Analyse und Verbesserung
- Die Extension PerformanceInspector hilft, Engpässe bei Parser-Metriken, Modulen und Bildern zu erkennen
- Regelmäßige Leistungstests (Performance Reviews) sind bei umfangreichen Änderungen empfehlenswert
Durch diese Maßnahmen können Seitenladezeiten, insbesondere bei großen Wikis, von über einer Sekunde auf wenige Millisekunden gesenkt werden
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks
- https://www.mediawiki.org/wiki/Manual:Performance_tuning
- https://www.mediawiki.org/wiki/Manual:Varnish_caching