performance

Webserver Geschwindigkeit messen mit Apache Benchmark (ab) – Performance Test

apache logo

In Zeiten wie diesen wird es immer wichtiger die Ladezeiten einer Webseite zu optimieren. Natürlich in erster Linie, um dem User die beste Experience zu gewährleisten. Und in weiterer Instanz natürlich für Google, da die Website-Performance auch in das Suchmaschinen Ranking einfließt.

Doch bevor man anfängt wild “herumzuoptimieren” und diverse Tools auszuprobieren, sollte man sich im ersten Schritt Gedanken machen wie man die Performance eigentlich messen kann.

  • Wieviele Anfragen kann mein Webserver gleichzeitig verarbeiten?
  • Welche Geschwindigkeit hat mein Webserver bei einem Aufruf einer Webseite?

Apache liefert bei der Serverinstallation ein tolles Tool mit, welches sich “Apache HTTP server benchmarking tool” (kurz: “ab” oder “ab2″) nennt. Dieses kann verwendet werden um mehrere und vor allem gleichzeitige Anfragen auf Webservern zu simulieren. Man könnte jetzt viele Worte darüber verlieren was das Programm macht und kann, aber am besten sieht man es an einem Praxisbeispiel.

Apache Benchmark (ab) installieren:

Der Apache Benchmark wird mit dem Webserver mit installiert. Wer auf einem System den Webserver nicht extra installieren möchte, kann die apache2-utils verwenden.

apt-get install apache2-utils

Webseiten Performance messen mit Apache Benchmark

Was gibt es zu beachten?

1) Der Server, welcher den Benchmark durchführt, sollte ein anderen sein, als der, der die Webseite hosted. Idealerweise ein dedizierter Root Server mit ordentlich Power.
2) Ihr solltet bei den Tests eine gute Internet Bandbreite zur Verfügung haben.
3) Die Tests sollten immer von dem selben Server/Rechner durchgeführt werden.
4) Macht mehrere Durchläufe (mind. 5, besser 10) und errechnet den Durchschnittswert.

Ich verwende für den Apache Benchmark folgenden Befehl:

ab -c 20 -n 200 http://www.sysadminslife.com/

-c Anzahl der gleichzeitigen Verbindungen (20)
-n Anzahl der Anfragen, welche ausgeführt werden (200)
http://www.sysadminslife.com/ gibt die Webseite an, welche getestet wird ;)

ab hat viele weitere Einstellungsmöglichkeiten die hier sehr detailliert beschrieben sind.

TIPP: Beobachtet bei eurem Server, der die Webseite ausliefert, die CPU Last mit dem Befehl “top” während der Benchmark läuft und seht euch die Veränderung an. › Continue reading

Tags: , , , , , , , , , ,

Donnerstag, Februar 28th, 2013 Apache, Linux, WebServer Keine Kommentare

HowTo: gzip Komprimierung in Apache und IIS6 + IIS7 aktivieren

apache logo

Die gzip Komprimierung ist eine einfache Methode, um den verursachten Traffic einer Webseite zu reduzieren und die Performance zu erhöhen und zusätzlich die Kosten zu reduzieren.

Um zu erklären wie die gzip Komprimierung funktioniert, sollte man erstmal grundlegend wissen wie ein normaler Aufruf (Request) und die Antwort (Response) einer Webseite funktioniert. Grundsätzlich ist es aber so das jeder moderne Webbrowser, der letzten Jahre gzip Komprimierung unterstützt. Wenn ihr zB.: in eurem Browser http://www.sysadminslife.com ansurft funktioniert die Auslieferung der Webseite wie folgt mit- und ohne gzip Komprimierung:

(Anmerkung: Ich führe hier lediglich vereinfachte Beispiele an, um das Thema verständlicher zu machen.)

HTTP Request und Response ohne gzip-komprimierten Inhalt:

1. Der Browser fordert per GET Request die Datei /index.php an
2. Der Server sucht in seinem Webverzeichnis nach der angeforderten Datei
3. Der Server hat die Datei gefunden, sendet den Response Code 200 OK und übermittelt die Datei an den Browser
4. Der Browser wartet nun bis die gesamten 100KB übertragen sind, und zeigt danach die Webseite an

So funktioniert der grundsätzliche Ablauf zwischen dem Browser und dem Server. In einem HTML/PHP Dokument ist natürlich ziemlich viel Einsparungspotential vorhanden, wenn man die Dateien komprimiert. So ist zB. eine Datei die vorher 100KB groß war nur mehr ein Zehntel so groß (10KB) oder sogar noch kleiner. Zudem sei noch gesagt, dass eine moderne Webseite natürlich nicht nur eine html oder php Datei abruft, sondern sich eine Seite aus mehreren php/html Dateien + Datenbankabfragen zusammenbaut.

Ihr wisst jetzt auf was ich hinaus will. Wenn wir die auszuliefernde Datei vorher am Server komprimieren ist sie kleiner und wird damit schneller zum Browser übertragen. Das spart natürlich Zeit und Bandbreite. Der Browser ladet also die gezippte Datei vom Server herunter und extrahiert sie, bevor sie angezeigt wird. Die Auslieferung sieht dann wie folgt aus:

HTTP Request und Response mit gzip-komprimierten Inhalt:

1. Der Browser fordert per GET Request die Datei /index.php an und teilt mit, dass er auch komprimierten Inhalt annehmen und verarbeiten kann
2. Der Server sucht in seinem Webverzeichnis nach der angeforderten Datei und zippt diese
3. Der Server hat die Datei gefunden, sendet den Response Code 200 OK, teilt dem Browser mit das die Datei gepackt ist und übermittelt diese an den Browser
4. Der Browser wartet nun bis die 10KB übertragen sind, entpackt sie und zeigt danach die Webseite an

Genauer Betrachtet

Der Browser sendet im Anfrage-Header mit, dass er auch gezippten Inhalt annehmen und verarbeiten kann. In der Regel sendet jeder moderne Webbrowser diesen Eintrag im Header mit: Accept-Encoding: gzip, deflate

Der Server sendet im Antwort-Header mit, ob der Inhalt komprimiert ausgeliefert wird. Content-Encoding: gzip Bei einem Webserver ist die Komprimierung nicht standardmäßig eingeschalten. Wenn der Server den Antwort Header nicht mitsendet, dann wird der Inhalt nach wie vor ohne Komprimierung übertragen. › Continue reading

Tags: , , , , , , , , , , , , ,

Donnerstag, Juli 30th, 2009 Allgemein, Apache, IIS, Linux, WebServer, Windows 16 Kommentare

eAccelerator – PHP Beschleuniger Installation unter Debian (squeeze)+(wheezy) und Ubuntu

PHP Logo

eAccelerator – kleines Programm mit großer Wirkung. Die schlanke PHP Erweiterung beschleunigt die Ausführung von PHP Code unter dem Apache Webserver. Installationsanleitung für Debian, Ubuntu und Linux Mint.

eAccelerator ist ein Tool, welches die Ausführung des PHP-Codes unter Apache beschleunigt. Der Code wird bereits in kompiliertem Zustand gespeichert, wodurch das Kompilieren bei jeden Seitenaufruf fast gänzlich wegfällt. Der bereits vorkompilierte Code wird im Shared Memory gespeichert und von dort direkt aufgerufen. Außerdem wird die Laufzeit optimiert, um die Ausführung des PHP-Codes zu beschleunigen.

Wichtig ist hierbei immer, dass ihr entsprechende Performance Tests, also Webseiten Benchmarks durchführt, damit man auch die Auswirkung sieht.

So wie es derzeit aussieht wird eAccelerator nicht mehr aktiv weiterentwickelt und die Kompatibilität zu PHP 5.4 lässt sehr zu wünschen übrig, deshalb rate ich den Zend OPcache als PHP Beschleuniger zu verwenden

Persönliche Erfahrungen mit eAccelerator:

Da wir vor einiger Zeit eine etwas stärker frequentiertere Seite hosteten und wir ziemliche Performanceprobleme hatten, gab mir ein befreundeter Administrator den Tipp eAccelerator auszuprobieren. Ich war erst skeptisch und notierte mir die genauen Ladezeiten der Seite, um nach der Installation von eAccelerator einen Vergleichswert zu haben. Die Performancesteigerung war in meinem Fall nach der Installation ganze 89,5%.

Für eAccelerator gibt es leider keine offiziellen Pakete unter den Sources, darum müssen wir die Software per Hand downloaden und kompilieren. Dieser Schritt ist allerdings nicht allzu schwer:

Voraussetzungen installieren:

Damit wir eAccelerator für das System kompilieren können, sind einige Pakete dafür notwendig, die in “build-essential” enthalten sind, ausserdem benötigen wir das php5-dev Paket. Dieses installieren wir über folgenden Befehl:

apt-get install build-essential php5-dev bzip2

eAccelerator downloaden und entpacken:

Wir holen uns nun die aktuellste Version von eAccelerator bei der Herstellerseite und speichern diese nach /usr/src. Derzeit ist die aktuellste Version 0.9.6.1.

cd /usr/src
wget http://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2

Der eAccelerator befindet sich nun gepackt in unserem /usr/src Verzeichnis. Diesen werden wir nun entpacken.

tar -xjvf eaccelerator-0.9.6.1.tar.bz2

eAccelerator wurde und erfolgreich in /usr/src entpackt.

eAccelerator kompilieren und konfigurieren:

Mit folgenden Befehlen kompilieren/installieren wir eAccelerator für unser System

cd eaccelerator-0.9.6.1
phpize
./configure
make
make install

Nachdem diese Schritte abgeschlossen sind, teilen wir unserem PHP mit, dass wir gerne eAccelerator verwenden möchten. Dazu legen wir eine neue ini Datei in unserem Standard PHP Verzeichnis an

vi /etc/php5/conf.d/eaccelerator.ini

Die gerade erstellt eaccelerator.ini befüllen wir nun mit folgendem Standard-Inhalt:

extension="eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Genaure Informationen zu den Einstellungen findet ihr Hier

Der Wert “eaccelerator.shm_size” definiert den maximalen Speicher, welchen sich eAccelerator nehmen darf und sollte daher behutsam angepasst werden.

Damit eAccelerator auch die Cachefiles auf unser Festplatte ablegen darf, erstellen wir den Ordner, den wir in der .ini Datei konfiguriert haben (/var/cache/eaccelerator) und vergeben auch die entsprechenden Rechte.

mkdir /var/cache/eaccelerator
chmod 777 /var/cache/eaccelerator

Als letzten und abschließenden Schritt starten wir nun unseren Apache neu:

apache2ctl restart

oder

/etc/init.d/apache2 restart

eAccelerator Controlpanel aktivieren

Danke an Peter für den Tipp und die Beschreibung für das Controlpanel

Die Datei control.php muss lediglich aus dem Verzeichnis /usr/src/eaccelerator-0.9.6.1 in das Webserververzeichnis kopiert werden:

cp /usr/src/eaccelerator-0.9.6.1/control.php /var/www/

Nun editieren wir die Datei control.php…

vi /var/www/control.php

…und ändern die Logininformationen, mit denen auf control.php zugegriffen werden kann (“admin” und “eAccelerator” entsprechend ersetzen)

$user = “admin“;
$pw = “eAccelerator“;

Als Abschließenden Schritt muss dem Controlpanel noch die notwendige Berechtigung gewährt werden, um Daten aus eAccelerator auszulesen und auch Kommandos zu senden. Dazu bearbeiten wir die Datei eaccelerator.ini…

vi /etc/php5/conf.d/eaccelerator.ini

…und ergänzen diese um folgenden Eintrag
eaccelerator.allowed_admin_path="/var/www/control.php"
Jetzt noch den Apache neu starten und das Controlpanel kann über http://www.mein-server.org/control.php aufgerufen werden.

Und so sieht das eAccelerator Control Panel dann aus:

eAccelerator deinstallieren / entfernen

Um den eAccelerator wieder sauber zu entfernen werden lediglich die .ini und die .so Datei gelöscht:

rm /etc/php5/conf.d/eaccelerator.ini
rm /usr/lib/php5/20090626/eaccelerator.so

[eAccelerator] This build of “eAccelerator” was compiled for PHP version 5.x.x. Rebuild it for your PHP version (5.x.x) or download precompiled binaries.

Wenn ein Update der installierten PHP Version durchgeführt wurde, ist es notwendig den eAccelerator neu zu kompilieren (Wichtig: make clean). Dazu einfach die vorhandene eAccelerator Dateien im Verzeichnis /usr/src verwenden oder neu herunterladen und den Kompilierungsvorgang erneut ausführen:

cd /usr/src/eaccelerator-0.9.6.1
make clean
phpize
./configure
make
make install

Tags: , , , , , , , , , , ,

Samstag, Juni 6th, 2009 Apache, Linux, WebServer 29 Kommentare
Hosting-Lösungen (VPS, Dedicated Server, Webspace und Colocation) von Contabo

Subscribe to our mailing list

* indicates required Email Adresse *
Werbung schalten

*=Affiliatelink

Blogverzeichnis - Blog Verzeichnis bloggerei.de