vBulletin Forum optimieren / beschleunigen / Server-Last reduzieren

Alt 28.05.2010, 11:52   # 1
Halb Mensch, halb Admin
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 3.897
Wenn das vBulletin Forum mit ansteigenden Userzahlen immer langsamer oder die Last des Servers zu hoch wird, dann helfen schon einige wenige Optimierungen um das Problem in den Griff zu bekommen.

Mit den folgenden Optimierungen ließ sich die Performance des netzwelt.de Forums (über 130.000 User) um ca. 50 % bis 60 % steigern.



Wer ist online
Kontrollzentrum -> vBulletin-Einstellungen -> Wer ist online
  • Anzeige von Gästen, deaktivieren
  • IP-Adressen auflösen, deaktivieren

Kontrollzentrum -> Benutzergruppen verwalten -> Nicht registriert / Nicht angemeldet
  • Kann "Wer ist online" sehen, deaktivieren


CSS-Stylesheets als Dateien speichern, aktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Style und Sprache
Wichtig: Es muss ein Verzeichnis namens 'vbulletin_css' im Verzeichnis 'clientscript' angelegt werden, in dem der Webserver Dateien erstellen darf (777).


Templatenamen als Kommentar in HTML-Quelltext schreiben, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Allgemeines


HTML-Ausgabe mit GZIP komprimieren, aktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Cookies und HTTP-Header

Einen Eintrag drunter den GZIP Kompressions-Grad auf 1 setzen. Ein höherer Wert treibt nur die Serverlast unnötig nach oben.


Forumsuche optimieren
Die Forensuche kann man optimieren in dem man der Tabelle "post" einen zusätzlichen Index verpasst. Dazu sollte man folgende Query ausführen:

Code:
ALTER TABLE "post" ADD INDEX "datelineuserid" ( "userid" , "dateline" );
Der zusätzliche Index benötigt ein Paar MB an zusätzlichen Speicherplatz.


Lebensdauer gecachter Beiträge erhöhen
Kontrollzentrum -> vBulletin-Einstellungen -> Servereinstellungen und Optimierungen

Den Wert sollte man auf mindesten 30 Tage setzen. Zu emfehlen sind 90 Tage.


Verzeichnisse/Scripte in der robots.txt ausschließen
Nicht relevante (unwichtige Inhalte für Suchmaschinenergebnisse) Inhalte sollten durch die robots.txt für die crawler gesperrt werden um keine zusätzliche Last zu erzeugen.

Als Grundeinstellung kann folgender Eintrag genutzt werden:

Code:
User-agent: *
Disallow: /forums/admincp/
Disallow: /forums/clientscript/
Disallow: /forums/cpstyles/
Disallow: /forums/customavatars/
Disallow: /forums/customprofilepics/
Disallow: /forums/images/
Disallow: /forums/modcp/
Disallow: /forums/ajax.php
Disallow: /forums/attachment.php
Disallow: /forums/calendar.php
Disallow: /forums/cron.php
Disallow: /forums/editpost.php
Disallow: /forums/global.php
Disallow: /forums/image.php
Disallow: /forums/inlinemod.php
Disallow: /forums/joinrequests.php
Disallow: /forums/login.php
Disallow: /forums/member.php
Disallow: /forums/memberlist.php
Disallow: /forums/misc.php
Disallow: /forums/moderator.php
Disallow: /forums/newattachment.php
Disallow: /forums/newreply.php
Disallow: /forums/newthread.php
Disallow: /forums/online.php
Disallow: /forums/poll.php
Disallow: /forums/postings.php
Disallow: /forums/printthread.php
Disallow: /forums/private.php
Disallow: /forums/profile.php
Disallow: /forums/register.php
Disallow: /forums/report.php
Disallow: /forums/reputation.php
Disallow: /forums/search.php
Disallow: /forums/sendmessage.php
Disallow: /forums/showgroups.php
Disallow: /forums/subscription.php
Disallow: /forums/threadrate.php
Disallow: /forums/usercp.php
Disallow: /forums/usernote.php
Natürlich kann man diese noch nach eigenen Bedürfnissen ergänzen.


.htaccess in die vhost.conf verschieben
Dieser kleine Trick bringt meiner Meinung nach die meiste Entlastung, nicht nur für das Forum.

Man sollte, falls möglich, die .htaccess in die vhost.conf (kann je nach OS variieren) verschieben da bei jedem Seitenaufruf geprüft wird ob die .htaccess überhaupt existiert und dann muss sie noch einmal ausgewertet werde. Das verursacht nur unnötige Datenzugriffe. Wenn die .htaccess aber in die vhost.conf verschoben wird, dann wird der Inhalt dieser in den RAM geladen und die Auswertung geht wesentlich schneller.

Wichtig: Nachdem die .htaccess verschoben wurde muss der Server neu gestartet werden, damit er sich den Inhalt in den RAM laden kann.


Yahoo Slurp Spider und Teoma/Ask Jeeves Spider ausbremsen
Diese beiden spider crawlen mehrere Tausend Seiten täglich und bringen kaum Trafik über die Suchmaschine. Deswegen kann man die beiden ohne Probleme etwas ausbremsen und denen "sagen", dass sie nur alle 60/90 Sekunden eine Seite aufrufen dürfen.

Dafür muss folgendes in die robots.txt eingetragen werden.

Yahoo Slurp Spider
Code:
User-agent: Slurp
Crawl-delay: 60
Teoma/Ask Jeeves Spider
Code:
User-agent: Teoma
Crawl-delay: 90
Nachtrag: In einem anderen Blogeintrag habe ich eine Liste mit bösartigen Spidern erstellt, die man ebenfalls in der robots.txt aussperren kann.


No-Cache HTTP-Header senden deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Cookies und HTTP-Header

Mit dieser Einstellung muss die Seite nicht jedes Mal neu berechnet werden, sondern wird teilweise im Browsercache abgelegt.


Hitzahl der Themen/Anhänge sofort aktualisieren, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Servereinstellungen und Optimierungen


Wartezeit zwischen zwei Suchanfragen
Kontrollzentrum -> vBulletin-Einstellungen -> Suchmaschine: Einstellungen

Den Wert sollte man nicht auf 0 belassen, da die Forensuche sehr Lastintensiv ist


Bewertung eines Themas anzeigen, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Forum: Themenanzeige (showthread)



Weitere Optimierungen
Die folgenden Optimierungen wurden von mir nicht verwendet, sollen aber auch hilfreich sein.


Anhänge in das Dateisystem verschieben
Kontrollzentrum -> Anhänge -> Anhangs-Speicherart

Das Gleiche gilt auch für Avatare.


Suche für Gäste, deaktivieren
Finde ich persönlich den Gästen gegenüber nicht besonders fair.


Automatische Suche nach ähnlichen Themen, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Suchmaschine: Einstellungen

Sehr Lastintensiv aber auch nützlich

Generell sollte man die Forensoftware und Plugins regelmäßig auf neue Updates überprüfen.
Die Hersteller verbessern ihre Software mit jedem Update was sich oft positiv auf die Performance auswirkt. So bringt z.B. die aktuelle vBSEO Version (3.1) gegenüber den Vorgängern einen kleinen Geschwindigkeitsvorteil.

Update ( 19.12.2008 ):
Auf vbulletin.org wurde das Add-On vB Optimise 1.0.2 veröffentlicht, mit dem sich die Templates, Styles und Phrasen cachen lassen, was für eine Entlastung der Datenbank und für eine schnellere Ladezeit sorgt.

Die Messungen mit Hilfe von Microstats (vB-Add-On) haben im NW-Forum eine durchschnittliche Verbesserung der Ladezeit um 0.3 Sekunden und eine Einsparung von zwei DB-Queries ergeben.

Update ( 05.02.2009 ):
Bestimmte Funktionen und Features für Gäste ausstellen ist ja schön und gut aber manche Funktionen, die die Datenbank belasten und für Gäste eher uninteressant sind, lassen sich nicht separat abstellen. Da hilft ein einfacher Trick, den man mittels des vBulletin-Hook-Systems realisieren kann. Dafür erstellt man im AdminCP ein neues Plug-In (Add-ons & Plug-ins -> Plug-in hinzufügen) und wählt als Einstiegspunkt "global_start" aus.

Der Einstiegspunkt "global_start" bedeutet, dass das Plug-In bei jedem Seitenaufruf aufgerufen wird.

Nun kann man für Gäste ganz speziell Funktionen deaktivieren, die sich normalerweise nur global deaktivieren lassen. Dafür trägt man in das Feld "PHP-Code des Plug-ins" folgendes ein:

PHP-Code:
// Benutzergruppe prüfen
if ($vbulletin->userinfo['usergroupid'] == 1){
    
// Moderatoren-Spalte anzeigen
    
$vbulletin->options[showmoderatorcolumn] = false;

    
// Geburtstage anzeigen
    
$vbulletin->options[showbirthdays] = false;

    
// Mitarbeiter-Liste anzeigen
    
$vbulletin->options[forumleaders] = false;

    
// Weitere Funktionen
    // ...

In diesem Beispiel wird die Moderatoren-Spalte, die Geburtstagskinder und die Mitarbeiter-Liste für Gäste deaktiviert, da diese Informationen für sie relativ uninteressant sind. Ein positiver Nebeneffekt dabei ist, dass der Quellcode schlanker und die Anzahl an Links reduziert wird, was den Google-Bot freuen wird.

Die Einstellungen oben sind nur ein kleiner Auszug, wie sie auf netzwelt.de eingesetzt werden. Durch gezieltes Deaktivieren von Add-Ons oder Teilfunktionen dieser, kann man den einen oder anderen Datenbankzugriff sparen. Bei einigen Tausend oder Hunderttausend Gästen täglich kommt eine schöne Summe an Datenbankzugriffen zusammen, die man dem Server einfach abnimmt.

Update ( 20.04.2009 ):
Eine Kleinigkeit ist mir noch aufgefallen, die man Gästen ersparen kann, wenn man keine globalen Hinweise (integriert seit vBulletin 3.7.4) anzeigt, bzw. nur Hinweise für Mitglieder anzeigt, wozu ich eh aus SEO-Sicht raten würde.

Hinweise für Gäste, lassen sich mit der bereits oben genanten Methode, mit dem Plug-In, deaktivieren (Das spart bei Gästen pro Seitenaufruf mind. einen Datenbankzugriff). Man gaukelt dem System einfach vor, dass keine Hinweise verfügbar sind, indem man das Array "noticecache" "leert".

PHP-Code:
// Benutzergruppe prüfen
if ($vbulletin->userinfo['usergroupid'] == 1){
    unset(
$vbulletin->noticecache);

Hinweis: Wenn weitere Optimierungen oder Tipps und Tricks bekannt werden, dann werden sie hier veröffentlicht.
  Mit Zitat antworten
Alt 28.05.2010, 12:01   # 2
Arthur Spooner
Halb Mensch, halb Admin
Threadstarter
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 3.897
Anmerkung: Der Beitrag wurde aus dem Blog übernommen.
  Mit Zitat antworten
Alt 30.05.2010, 17:50   # 3
ragtek
 
Registriert seit: 04.05.2010
Beiträge: 2
Zitat:
.htaccess in die vhost.conf verschieben
Dieser kleine Trick bringt meiner Meinung nach die meiste Entlastung, nicht nur für das Forum.

Man sollte, falls möglich, die .htaccess in die vhost.conf (kann je nach OS variieren) verschieben da bei jedem Seitenaufruf geprüft wird ob die .htaccess überhaupt existiert und dann muss sie noch einmal ausgewertet werde. Das verursacht nur unnötige Datenzugriffe. Wenn die .htaccess aber in die vhost.conf verschoben wird, dann wird der Inhalt dieser in den RAM geladen und die Auswertung geht wesentlich schneller.

Wichtig: Nachdem die .htaccess verschoben wurde muss der Server neu gestartet werden, damit er sich den Inhalt in den RAM laden kann.
Das stimmt so nicht.
1. Ja man merkt einen Unterschied, aber meiner Meinung nach hat das sicher nicht den größten Effekt.
Vorallem bringt das alleinige Verschieben nicht wirklich etwas.
Wenn, dann muss man "die htaccess Dateien" (genauer gesagt AllowOverride) global im Apache deaktivieren, damit diese auch nicht gesucht werden.
Zitat:
The first of these is performance. When AllowOverride is set to allow the use of .htaccess files, Apache will look in every directory for .htaccess files. Thus, permitting .htaccess files causes a performance hit, whether or not you actually even use them! Also, the .htaccess file is loaded every time a document is requested.
Further note that Apache must look for .htaccess files in all higher-level directories, in order to have a full complement of directives that it must apply
Mehr dazu: http://httpd.apache.org/docs/2.2/de/howto/htaccess.html



Man sollte lieber auf die komplette Serverkonfiguration hier eigehen
Apache Konfig, MySQL Konfig, div. Cachemöglichkeiten, php opcache etc...
  Mit Zitat antworten
Alt 30.05.2010, 18:00   # 4
Arthur Spooner
Halb Mensch, halb Admin
Threadstarter
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 3.897
Ja, hast Recht. Der Hinweis zur Deaktivierung der .htaccess fehlt, das muss natürlich auch noch gemacht werden.

Damals hat das, von meinem Empfinden her, den meisten Unterschied gemacht. Es macht sich schon stark bemerkbar ob bei einem Seitenzugriff, der durch Bilder und Co. noch mehr Requests verursacht, auf die Festplatte oder auf den RAM zugegriffen wird. Und da vBulletin nicht gerade wenige Requests (Bilder, CSS, JS) pro Seitenaufruf verursacht, ist das, in meinen Augen, ein Muss.

Zitat:
Man sollte lieber auf die komplette Serverkonfiguration hier eigehen
Apache Konfig, MySQL Konfig, div. Cachemöglichkeiten, php opcache etc...
Der Beitrag heißt ja auch "vBulletin optimieren" und nicht "Server optimieren", die .htaccess war nur ein kleiner Ausflug in die Richtung
  Mit Zitat antworten
Alt 30.05.2010, 19:02   # 5
ragtek
 
Registriert seit: 04.05.2010
Beiträge: 2
Ja mag schon sein.
ABER wenn der Server (und ev. auch dir Infrastruktur) "verdammt schei*e" konfiguriert ist, bringen die besten Tipps nichts!

Genauso bringen egal was für Tipps bei einem vB nichts, das voll mit extrem schlecht programmierten Add-ons ist und dadurch ev. Ressourcenhungrig bis zum geht nicht mehr ist... Die zwingen das Board dann ziemlich in die Knie, ohne das man als "ahnungsloser" Admin der hier nun mitliest, etwas machen kann.......
  Mit Zitat antworten
Alt 30.05.2010, 19:10   # 6
Arthur Spooner
Halb Mensch, halb Admin
Threadstarter
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 3.897
Wer ein Board als Webspace oder auf einem V-Server betreibt der darf sich halt nicht wundern
  Mit Zitat antworten

Alt 27.05.2012, 12:45 # --
News Flash
 
Benutzerbild von News Flash
 
 
 
   
Antwort

Stichworte
optimieren, ratgeber, vbulletin
Themen-Optionen



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:45 Uhr.