Schlagwort-Archive: tuning

WordPress mit CoralCDN beschleunigen

Meine potenzielle beste Ehefrau von Allen hat auch einen Blog, einen sehr bilderlastigen Blog. Nachdem sie selbst, dutzende kleiner bunter Boxen und Kästchen, lebendige Pflanzen, ein Kater sowie ein wunderschöner Gummibaum eingezogen sind, zieht heute auch ihr Blog nach. Beim Kopieren der über 200 Megabyte an Bildern befiel mich das kalte Grausen.

Das kostenlose Content Delivery Network CoralCDN hilft hier weiter. Indem eine beliebige URL um nyud.net ergänzt wird, kann Coral eingebunden werden. Das CoralCDN meldet sich wie folgt in der Apache access.log:

164.107.abc.def - - [04/Jul/2012:19:58:54 +0200] "GET /wp-content/uploads/2012/07/img_0870.jpg HTTP/1.0" 200 100628 "-" "CoralWebPrx/0.1.20 (See http://coralcdn.org/)"

Nach dem Ersten Aufruf, wie oben abgebildet, ist das Bild oder die Webseite im CDN gespeichert und kann von dort bei jedem nächsten Aufruf schneller ausgeliefert werden. Um nicht jede Adresse um nyud.net ergänzen zu müssen, wird im Verzeichnis wp-content/uploads/ eine .htaccess Datei angelegt, die alle Anfragen um .nyud .net ergänzt. Dabei ist zu beachten, dass Anfragen vom CoralCDN selbst nicht umgeschrieben werden.

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !^CoralWebPrx
RewriteCond %{QUERY_STRING} !(^|&)coral-no-serve$
RewriteRule ^(.*)$ http://%{HTTP_HOST}.nyud.net/wp-content/uploads/$1 [R,L]

Gegebenenfalls muss für die Funktion der htaccess noch mittels a2enmod rewrite der mod_rewrite aktiviert werden, oder die Aktivierung beim Provider erfragt werden. Da dieser Datenverkehr einspart, dürfte die Aktivierung problemlos sein.

rsync,ssh,tar und socat – Große Datenbestände kopieren

Manchmal muss es etwas schneller sein als sonst. Gerade wenn man mit einem zehn Jahre alten Datenbestand von einem Computer auf einen anderen umziehen möchte.

Wie ist dabei der Maximaldurchsatz zu erreichen?

Am Transfer großer Datenbestände sind in erster Linie zwei Komponenten zwangsweise beteiligt. Das Festplatten-Subsystem und das Netzwerk-Subsystem der zu synchronisierenden Computer.

Standardlösung

Da das Problem nicht neu ist und sich selbst in Lehrbüchern wiederfindet gibt es eine Standardlösung: rsync.

rsync -ar --stats --progress /home/meinBenutzer/*Ü meinBenutzer@neuerComputer:~/

Soll es mit rsync, dass auf SSH für den Transfer setzt, schneller gehen, passt man die Chiffre an. Das funktioniert durch die Option -e "ssh -c arcfour", die den RC4 Stromchiffre verwendet. Der Durchsatz steigt, aber erreicht aufgrund des Overheads der Verschlüsselung und der Integritätsprüfungen, die rsync bietet nicht Netzwerk- oder Festplatten-Maximaldurchsatz.

Mehr Power!

Der Maximaldurchsatz der Festplatte lässt sich erreichen, indem die lesenden und schreibenden Operationen sequentiell durchgeführt werden. Ein Programm, dass die Daten sequentiell liest ist tar. Indem man tar anweist, das erzeugte Archiv auf die Standardausgabe zu senden, kann es über das LAN transportiert werden. Um hierbei den Prozessor nicht einzuspannen, erfolgt die Übertragung unverschlüsselt und unkomprimiert mit socat.

Das geht wie folgt:

Auf dem Server (Empfänger)

socat tcp-listen:31337,rcvbuf=67108864,dontroute stdout | tar xvf - -C ./

Auf dem Client (Sender)

tar cvf - ./* | socat stdin tcp:192.168.my.ip:31337,sndbuf=67108864,dontroute

Erwähnenswert ist besonders die Option dontroute, durch die sichergestellt wird, dass der Datenverkehr der sensiblen privaten Daten nicht das lokale Netz verlässt. Mit den Optionen rcbuf und sndbuf werden die TCP-Puffer auf beiden Seiten vergrößert und das Auto-Tuning des Kernels umgangen.

Fazit

Durch die Vermeidung von Verschlüsselung, Komprimierung und der manuellen Vergrößerung der Sende- und Empfangspuffer sollte theoretisch jetzt der Maximaldurchsatz erreicht werden können. Bei einem sehr unwissenschaftlichen Test bestätigte sich die Vermutung, dass socat mit tar schneller ist.

Beim Kopieren von 560 Gigabyte von einem mit 170 MB/sec lokal gemessenen Software-RAID1 zu einem 411 MB/sec lokal gemessenen Software-RAID1 erreichte rsync einen Maximaldurchsatz von 340 MBit/sec, tar mit socat reizte die vollen 988 MBit/sec aus.