MediaWiki/Performance: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 14: | Zeile 14: | ||
* [[OPcache]] | * [[OPcache]] | ||
* Objekt-Caching | * Objekt-Caching | ||
* APCu/Memcached installieren | * APCu/Memcached installieren | ||
* ressourcenintensive Bot-Crawler blockieren | * ressourcenintensive Bot-Crawler blockieren | ||
| Zeile 27: | Zeile 27: | ||
== 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 62: | ||
== 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 101: | ||
; 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 131: | Zeile 131: | ||
=== 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 154: | Zeile 154: | ||
; Bereiche | ; Bereiche | ||
* Caching (Memcached, Redis) | * Caching (Memcached, Redis) | ||
* Datenbankoptimierung | * Datenbankoptimierung | ||
* Deaktivieren ungenutzter Erweiterungen | * Deaktivieren ungenutzter Erweiterungen | ||
| Zeile 163: | Zeile 163: | ||
* Pflege einer effizienten Job-Queue | * Pflege einer effizienten Job-Queue | ||
Die Wikimedia Performance-Initiative überwacht diese Faktoren kontinuierlich, um eine hohe Benutzererfahrung zu gewährleisten | Die Wikimedia Performance-Initiative überwacht diese Faktoren kontinuierlich, um eine hohe Benutzererfahrung zu gewährleisten | ||
== Maßnahmen zur Leistungssteigerung == | == Maßnahmen zur Leistungssteigerung == | ||
; Caching | ; Caching | ||
Objekt-Cache | Objekt-Cache | ||
* Verwendung von Memcached oder Redis ist essenziell für die Zwischenspeicherung von Datenbankabfragen | * Verwendung von Memcached oder Redis ist essenziell für die Zwischenspeicherung von Datenbankabfragen | ||
Parser-Cache | Parser-Cache | ||
* wgParserCacheType sollte auf ein schnelles Medium (z. B. Redis) eingestellt sein | * wgParserCacheType sollte auf ein schnelles Medium (z. B. Redis) eingestellt sein | ||
Varnish | Varnish | ||
* Der Einsatz von Varnish-HTTP-Cache vor dem Webserver (wie bei Wikipedia) ist hocheffizient für anonyme Zugriffe | * Der Einsatz von Varnish-HTTP-Cache vor dem Webserver (wie bei Wikipedia) ist hocheffizient für anonyme Zugriffe | ||
Lokaler Cache | Lokaler Cache | ||
* Verwendung von APCu für lokale Zwischenspeicherung auf dem Server | * Verwendung von APCu für lokale Zwischenspeicherung auf dem Server | ||
; Datenbank-Optimierung | ; Datenbank-Optimierung | ||
* Regelmäßige Wartung, Indizierung und ggf. Trennung von Web- und Datenbankservern | * Regelmäßige Wartung, Indizierung und ggf. Trennung von Web- und Datenbankservern | ||
; Extensions & Parser | ; Extensions & Parser | ||
* Unnötige Erweiterungen deaktivieren, da diese oft die Hauptursache für Verlangsamungen sind | * Unnötige Erweiterungen deaktivieren, da diese oft die Hauptursache für Verlangsamungen sind | ||
* Parser-Profiling-Metriken (wgPageParseReport) nutzen, um langsame Seiten zu identifizieren | * Parser-Profiling-Metriken (wgPageParseReport) nutzen, um langsame Seiten zu identifizieren | ||
; Konfiguration | ; Konfiguration | ||
* $wgMainCacheType und $wgSessionCacheType korrekt auf einen zentralen Cache (z. .B. Memcached) einstellen, besonders bei mehreren Webservern | * $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 | * Job-Queue optimieren, um Hintergrundaufgaben nicht die Live-Performance beeinträchtigen zu lassen | ||
; Leistungsüberwachung | ; Leistungsüberwachung | ||
* Die Wikimedia Performance-Initiative bietet Tools zur Analyse und Verbesserung | * 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 | * 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 | * 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 | Durch diese Maßnahmen können Seitenladezeiten, insbesondere bei großen Wikis, von über einer Sekunde auf wenige Millisekunden gesenkt werden | ||
<noinclude> | <noinclude> | ||
Version vom 19. Oktober 2026, 15:49 Uhr
MediaWiki/Performance - Leistungsoptimierungen für MediaWiki
Beschreibung
- 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?
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks
TMP
MediaWiki/performance - Performance von MediaWiki steigern
Beschreibung
- Bereiche
- Caching (Memcached, Redis)
- Datenbankoptimierung
- Deaktivieren ungenutzter Erweiterungen
- 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
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
Weblinks