SoSci Survey
Übersetzungen dieser Seite:
 

Optimierung der Server-Leistung

Ein typischer Webserver mit 15 CPU-Kernen à 2 GHz schafft mit oFb 2.2.02 ca. 500 Interviews pro Stunde, ohne dass wesentliche Verzögerungen auftreten. Das entspricht ca. 7.500 Interviews am Tag, weil die Interviews sich normalerweise ungleichmäßig über den Tag verteilen.

Für kleine und mittlere Befragungen ist das vollkommen ausreichend. Aber es gibt durchaus Situationen, in denen mehr als 7.500 Interviews am Tag laufen müssen (z.B. auf SoSciSurvey.de) oder in denen weniger Prozessorkerne zur Verfügung stehen (z.B. wenn oFb mobil auf einem Laptop laufen muss). In diesen Fällen gibt es aber zum Glück kräftige Hebel, um die Leistung deutlich zu steigern.

Welche Maßnahme am besten hilft, hängt natürlich davon ab, welcher Flaschenhals konkret Probleme verursacht. Die größte Leistungssteigerung auf einem typischen Webserver ist jedoch durch die Aktivierung von APC zu erwarten.

Datenbank entlasten

Grundsätzlich verwendet oFb seit Version 2.2.00 einen Caching-Mechanismus für alle Fragen und Items. Die Anzahl der Datenbank-Abfragen kann so deutlich gesenkt werden. Damit beim Speichern der Antworten keine unnötigen Verzögerungen auftreten, schickt oFb die nächste Seite zudem ab, bevor die Antworten in die Datenbank geschrieben werden.

Die Aktivierung des Schreibcache für Interviews kann eine überlastete Datenbank weiter unterstützen. Dabei werden die Interviews komplett in Cache-Dateien gespeichert und erst zeitversetzt in die Datenbank geschrieben, sobald die Serverlast das zulässt. Damit die Interviews regelmäßig in die Datenbank übertragen werden, muss stündlich das Skript crontask.php aufgerufen werden.

Für die Leistung ist es wichtig, dass die Datenbank die Indizes im RAM-Speicher vorhalten kann und nicht ständig auf die Festplatte zugreifen muss. Falls die Installation sehr viele Interviews (ca. ab 500.000) vorhält, ist eine Anpassung der Speicherkonfiguration sinnvoll (Vorbereitung des Servers I: MySQL-Konfiguration).

Persistente Datenbank-Verbindung

PHP (und damit auch oFb) startet für jede Anfrage ein neues Script. Bei oFb bedeutet das: Nach jedem Klick auf Weiter und bei jedem eingefügten Item wird ein neues PHP-Script gestartet. Und jedes Script muss sich zunächst mit der Datenbank verbinden.

Diese Verbindung kostet Zeit, die man sich eigentlich sparen könnte, denn das vorige Skript kann die Datenbank-Verbindung einfach geöffnet lassen. Diese Technik wird als persistente Datenbankverbindungen bezeichnet und kann in der Installationsroutine von oFb einfach aktiviert werden. Rufen Sie dafür einfach /admin/install.php im Browser auf.

Damit es keine Probleme gibt, muss man sicherstellen, dass die Datenbank mindestens so viele parallele Verbindungen akzeptiert, wie der Server parallele Verarbeitungsinstanzen (Threads) startet. Ist das nicht gewährleistet, werden Anfragen an die Datenbank bei hoher Serverlast mit Fehlern quittiert. Die entsprechenden MySQL-Variablen werden bereits in der Installationsanleitung erläutert.

Stellen Sie außerdem sicher, dass der Webserver Verbindungen nicht zu lange offen hält. Zwei Sekunden sind für oFb vollkommen ausreichend. Die Bearbeitungszeit für eine Fragebogen-Seite beträgt normalerweise 1-2 Minuten – so lange kann und will man die Verbindung ohnehin nicht offen halten. Und dann kann man sie auch gleich wieder für andere Nutzer freigeben.

Caching für PHP-Skripte (APC)

PHP bis einschließlich Version 5.3 lädt das Skript bei jedem Abruf neu von der Festplatte, übersetzt es in einen Bytecode (Opcode) und führt es anschließend aus. Nun benötigt man für die Erstellung einer Fragebogen-Seite aber nicht nur ein Skript, sondern etwa 20 Skripte - eines für den Teilnehmer, eines für Fragen, eines für Items, eines für die Formatierung der letztgenannten als Skala, etc.

Zum Glück gibt es für PHP verschiedene Erweiterungen, die den übersetzen Bytecode zwischenspeichern und den Skript-Start so massiv beschleunigen. Sehr große Verbreitung haben APC und der kommerzielle Zend Server, der zudem einige Optimierung am PHP-Code vornimmt.

Wichtig: Prüfen Sie vorab in oFb unter Server-VerwaltungServer-WartungPHP-Information, ob APC auf Ihrem Server nicht bereits aktiviert ist.

Auf dem Webserver SoSciSurvey.de erreichte APC direkt nach der Installation eine Vervielfachung der Leistung (der Faktor liegt etwa zwischen 3 und 5). Darüber hinaus verbessert sich auch die Antwortzeit im ruhigen Server-Betrieb um ca. 25%. Eine Installationsanleitung für APC erkärt, wie man APC aktiviert.

de/server/performance.txt · Zuletzt geändert: 28.03.2012 11:25 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki