[intern] iPhoneBlog.de 2009

Spätestens seit Januar war uns bewusst das wir etwas tun müssen. Die Ladezeiten und Ausfälle des iPhoneBlog waren nicht mehr die Ausnahme, sondern die Regel. Das nervte nicht nur uns sondern auch euch in zunehmendem Maße.

Seit etwa einer Woche sind unsere Pläne umgesetzt und das iPhoneBlog sollte mit Ausnahme des Feeds wieder zuverlässig und schneller als je zuvor erreichbar sein.
An dieser Stelle noch mal der dringende Hinweis. Solltet ihr Probleme mit dem Feed haben, abonniert ihn neu. Die Korrekte Feed Adresse ist:

https://www.iphoneblog.de/feed/

Soweit die Neuigkeiten. Im folgenden eine Schilderung was wir unternommen haben. Dies könnt ihr aus Interesse lesen, als Ratgeber für euren Blog sehen, oder einfach ignorieren. iPhone Relevanz nicht gegeben.

iPhoneBlog.de wurde seit Herbst Ende letzten Jahres auf meinem alten Hetzner Dedicated Server – DS3000 – gehostet. In einer damaligen Nacht und Nebel Aktion zogen wir die Seiten notgedrungen dorthin um. Der alte Anbieter (server4you) hatte ohne Vorankündigung die Seiten Offline genommen und den Vertrag gekündigt (zu hohe Last).

xen-weekly.png.jpg

Nun lag die WordPress Installation und alles was so dazu gehörte auf einem Athlon 3000XP mit 1 GB RAM. Das war besser als zuvor, aber auch schon lange nicht mehr Zeitgemäß. Den Normalbetrieb konnte der Server gut verkraften. Zu Spitzenzeiten schaukelte er sich jedoch immer öfter bis zur völligen Erschöpfung hoch. Wie zuletzt beim Live Event zur Vorstellung des iPhone OS 3.0 Noch am Abend dieses Tages hatten wir beschlossen neue Hardware zu mieten die uns für die nächsten Monate bzw. Jahre reichen wird.

Unsere Anforderungen sahen Folgende Punkte vor:

  • 4 GB Arbeitsspeicher oder mehr
  • Mindestens 2 CPUs lieber 4
  • 1 TB Traffic inklusive
  • keine 2 Man Show Anbieter
  • Hosting in Deutschland
  • monatliche Kosten unter 80 

Der Markt der Serververmieter ist recht Komplex. Aufgrund der sehr guten Erfahrungen in den letzten 5 Jahren viel unser erster Blick auf die aktuellen Angebote von Hetzner. Bis auf server4you und serverloft.de gab es auch keine Alternativen. Andere Anbieter die das Preislimit halten konnten schienen teils unseriös oder machten sonst einen seltsam Eindruck. Server4You schied aufgrund der Vergangenheit auch aus.

Es blieben im Rennen ein DS-5000 von Hetzner und das Angebot PerfectServer L von serverloft.

pic-primergy.gif

Entschieden haben wir uns für das Angebot von serverloft. Dies hatte mehrere Gründe. Unabhängig davon dass das Hetzner Angebot unsere Anforderungen abdeckte und zudem günstiger war konnten wir der doppelten Anzahl an CPU Cores nicht widerstehen. Zudem bestand Hetzner auch nach vielen Jahren Treue auf die Einrichtungsgebühr von 99 . Diese allein bezahlen das Delta zum Serverloft Angebot schon die ersten 5 Monate. Dennoch blieb ein flaues Gefühl. Schließlich vereint Hetzner die Vorteile eines kleinen Anbieters (flexibel) mit den Vorzügen eines großen Anbieters (Rechtssicherheit, Stabilität) in sich. Den neuen Anbieter konnten wir nicht einschätzen.

Für 79 € bietet das Angebot recht viel. Hier ein kleiner Auszug:

  • Quadcore Opteron
  • ein einfaches Hardware Raid – aber immerhin
  • 4 GB Speicher
  • Fujitsu Siemens 19″ 2HE Gerät mit beindruckend gutem Handbuch
  • Remote Management Interface (IPMI)
  • 5000 GB Traffic inklusive (100MBit Anbindung)

Unsere Hochrechnungen sagen uns das wir damit auf jeden Fall für die nächsten 18 Monate auskommen. Also: Bestellt!

Serverloft.de

Nach zwei Werktagen konnten wir erstmals auf die Hardware zugreifen. Das ist schnell. Die Informationspolitik bis dorthin war ausreichend, lässt aber noch Spiel nach oben zu.

Das von uns ausgewählte Startimage Debian 4.0 – Minimal schien eine leicht angepasste Version des Anbieters zu sein. Custom Kernel, /etc/modules angepasst usw. Spielte für uns aber eh keine Rolle, weil wir das OS eh selbst noch mal neu installiert haben. Was wir an dieser Stelle schmerzlich vermissten, war ein WIKI oder Forum des Anbieters, in dem Informationen zur Hardware gesammelt waren. So bleibt uns nichts anderes übrig als die nächsten Monate unsere eigenen Erfahrungen zu sammeln und dann zu handeln. Ein paar erste Ratschläge findet ihr weiter unten im Artikel.

Einen schlechten Eindruck hat zudem auch hinterlassen, dass in der motd des RescueSystems (Ubuntu Live), Kernelparameter empfohlen wurden die beim vorinstallierten Image nicht gesetzt waren. Eine Nachfrage beim Support hat inzwischen ergeben dass diese Informationen veraltet sind.

Auch war der Router/Layer3 Switch (Juniper) in unserem Subnetz mit einem Default Image versehen. Dies hatte zur Folge, dass sich das Interface an dem wir hingen wie ein Mirror Port verhielt. Früher sagte man dazu auch Hub. Wir sahen sämtlichen Traffic aller anderen Kunden in unserem Subnetz. Dies gilt natürlich auch umgekehrt. Selten war das Mitschneiden von Kennwörtern und anderen persönlichen Informationen so einfach möglich. Für das beheben dieses Verhaltens (nach unserem Hinweis) benötigte Serverloft noch 3 weitere Werktage. Für eine erste Stellungnahme gingen auch bereits 2 Tage ins Land. Auch waren SSH, SNMP und andere Dienste auf dem Router erreichbar. Wir haben es gelassen Default Kennwörter zu testen.

Detaillierte erste Eindrücke zum Support findet ihr auch in diesem Beitrag von mir im serversupportforum.de. Dieses Forum wird von Intergenia – der Firma hinter Server4You, Serverloft und anderen – betrieben und „moderiert“.

Mein Fazit zu Serverloft:

Gnadenlos günstig. Aber was man bekommt ist Hardware und eine Netzwerkanbindung. Wer sich nicht in allen Bereichen, die der Betrieb eines Servers mit sich bringt, selbst helfen kann hat verloren. Auch wer mit dem Gedanken spielt sich einen Dedicated Server zum „rumspielen“ oder wahlweise „lernen“ zuzulegen ist bei anderen Anbietern meiner Meinung nach besser beraten. Angebote ohne Support gibt es auch günstiger.

Vom Werbeslogan „Professionelles Hosting“ darf man sich, wie ich meine, daher nicht täuschen lassen. In der Praxis bedeutet das teils unfreundliche oder wahlweise inkompetente Mitarbeiter (Bitte beachten: Dies sind meine ganz persönlichen Empfindungen). Wenn Support für euch wie uns jedoch kein Kriterium ist – bei 79 € – könnte serverloft was für euch sein. Es könnte jedoch auch sein, dass mich hier mein beruflicher Hintergrund (IT-Berater, Großkunden) und der Support von Hetzner etwas blind für die Realität gemacht haben. Eventuell ist das geschilderte ja normal. Unter professionell verstehe ich jedoch etwas anderes.

Technik

Doch genug zum Anbieter. Ab jetzt Details für diejenigen die an der technischen Umsetzung interessiert sind. Vielleicht findet ihr euch ja irgendwann mal in der selben Situation oder könnt uns noch Anregungen geben. Ach ja, die Situation. Neben dem reinen Webserver für das iPhoneBlog soll die Hardware auch noch das eine oder andere Mini Projekt (Thorstens Experimente) beherbergen. Zum jetzigen Zeitpunkt standen folgende Dinge auf der Liste.

  • Webserver für diverse Seiten – Neben dem iPhoneBlog hauptsächlich Private Webseiten für Alex, mich, Freunde und Familie.
  • mysql Datenbank
  • VPN Konzentrator – zur Administration und zum surfen in offenen WLANs
  • IceCast 2 – Streaming Server für Live Berichterstattung
  • Fileserver
  • Diverser Kleinkram – SVN, Jabber,… Spielkram für mich halt…
  • Monitoring – der diversen Anwendungen

Schon zu Beginn stand fest dass wir Virtualisierung mit XEN einsetzen werden.

Die Gründe dafür sind einfach. Das wichtigste Kriterium ist eine Partitionierung der unterschiedlichen Anforderungen. Zum Beispiel muss mein „Spielkram“ getrennt sein vom Webserver. Es ist nicht gerade schön wenn mein $$1337-Server läuft, und dafür der Webserver in die Knie geht. Darüber hinaus erlaubt die Virtualiserung ein flexibles Zuteilen von Ressourcen. Die laufenden Applikationen haben für uns ja unterschiedliche Prioritäten.

Auch ist durch die Virtualisierung ein leichteres Skalieren möglich. Wir könnten zum Beispiel in 12 Monaten relativ leicht den gesamten Webserver auf eine zweite Hardware umziehen.
Ich möchte hier jedoch keinen Artikel über Virtualiserung schreiben. Dazu findet sich im Netz ausreichend Material. Es ist ein Branchentrend. Und das zu Recht.

Die konkrete Frage die wir noch hatten war wie genau wir die Partitionierung der vorhandenen Ressourcen vornehmen. Eine Domain – der XEN Begriff für einen virtuellen Computer – für jede Anwendung?

Also zum Beispiel eine Domain für das iPhoneblog.de inklusive aller Dienste wie Apache, mysql, Mail, usw… Eine Domain für unseren anderen Webdienste, eine Domain für Icecast2, eine für …

Oder doch eher eine Domain pro Applikation? Webserver -> Domain. Mailserver -> Eine Domain, SVN -> Eine Domain.

Vielleicht sogar nur 2 Domains. Eine für Alex, eine für mich.

Entschieden habe ich mich letztlich für eine Mischung aus allen 3 Ansätzen. Es ist Quatsch für jede Webseite ein eigenes Betriebsystem laufen zu lassen. Unser Setup sehr ihr im folgenden Schaubild. Im Anschluss eine Diskussion über die Aufgaben der jeweiligen Domains.

Bild 2.png

dom0

dom0 ist die priviligierte Domain einer XEN Installation. Die dom0 startet, verwaltet und beendet alle anderen Domains. Die Domain0 ist die einzige Domain die auf alle Hardware direkten Zugriff erhält und wird automatisch vom XEN Hypervisor gestartet.

Die generelle Empfehlung ist die dom0 so wenig wie möglich neben dieser Aufgabe machen zu lassen. Daran haben wir uns gehalten. Mit einer Ausnahme. Die Dom0 spielt Router und Firewall für unser „Netzwerk“.

Wie man erkennen kann haben wir alle Domains bis auf dom0 und web nur ein Interface. Dieses Interface ist an die virtuelle Bridge angeschlossen. Diese Domains haben lediglich private IP Adressen.

Zwischen Domain0 und web besteht eine Point to Point Verbindung. Die Domain0 agiert als Router für web.

web

web ist die Domain die unseren Apache beherbergt. Sonst nichts. kein Mysql, kein Mailserver. Wir haben dieser Domain mit Abstand die meisten Ressourcen zugeteilt. Apache profitiert unglaublich von RAM. Ein grundsätzlicher Unterschied zu anderen Domains ist das diese 2 Netzwerkinterfaces hat. Das übliche ins LAN und eines in unser LAN. Beim Webserver wollten wir kein NAT einsetzen. Da nehmen wir die Sicherheitsrisiken in kauf die das mit sich bringt. Es bleibt ein privates Projekt und irgendwo muss das ganze auch vom Betriebsaufwand überschaubar bleiben.

Ursprünglich hatten wir auch den Plan einen Reverse Proxy (entweder squid oder apache mit mod_proxy) in einer separaten Domain laufen zu lassen. Auch dieser ist erstmal dem Betriebsaufwand zum Opfer gefallen. Auch bin ich mir nicht mehr sicher ob er die Seiten noch beschleunigen könnte. Aber dazu später mehr im Abschnitt Apache.

mysql

Ein zentraler mysql Server. Viele Webseiten und Tools benötigen einen mysql Server. Insofern erschien es uns logisch diesen zentral zu betreiben und nicht für jeden Anwendungsfall eine separate Installation. Wir erhoffen uns davon eine Effektivere Ausnutzung der Ressourcen sowie geringer Wartungsaufwand.
Der Nachteil ist jedoch das Applikation A Applikation B negativ beeinflussen könnte.

icecast

Icecast ist unser Streaming Server. Die Ressourcen die so ein icecast Server benötigt sind quasi nicht existent. CPU und RAM bedarf sind kaum messbar. Das einzige was hier anfällt ist Netzwerk Traffic.

Ausgelagert haben wir diesen weil wir uns den mit einem befreundeten Projekt teilen und klare Trennung der Infrastruktur benötigen. Die Alternative wäre gewesen ihn auf dem Toolserver laufen zu lassen.

Tools

Damit wären wir auch schon beim Toolserver. Der Toolserver ist das Auffangbecken für den gesamten Rest. Alle Projekte starten erst einmal hier. Aktuell läuft hier Hauptsächlich ein Fileserver (NAS,WebDAV) für unseren Datenaustausch zwischen den Domains. Eigentlich sollte hier auch das Monitoring stattfinden. Durch einen nächtlichen Fehler liegt das aktuell noch auf „web“. Sehr unschön.

beta

Beta ist die Testumgebung für das iPhoneBlog und aktuell noch nicht von der alten Hardware migriert. Hier läuft ein Klon der WordPress Installation auf dem wir Dinge ausprobieren bevor wir sie auf die live Seite nehmen.

Installation des XEN Host Systems

Wie bereits oben angekündigt haben wir die Debian Minimal Installation von Serverloft.de nicht verwendet. Schließlich installieren wir eh XEN da bietet sich ein sauberer Start an.
Die Installation gestaltete sich dank der IPMI Konsole und eines Recoverysystems recht schmerzlos. Die IPMI Konsole – wer so etwas nicht kennt – ermöglicht den Zugriff auf den Server von der ersten Sekunde an. Technisch wird die Serielle Konsole an einen SSH/Webserver weitergeleitet der auf einem „Mini Computer im Computer“ läuft und seine eigene IP Adresse hat. Darüber kann man den Server auch Ein-/Ausschalten usw. Das rettet einen wenn das eigentliche Betriebsystem – aus welchen Gründen auch immer – nicht erreichbar ist.

Allgemein

Als Leitfaden für die Installation von Debian diente mir die offizielle Dokumentation. Der Einfachheit halber habe ich dazu das Rescue System von serverloft gebootet. Ein Ubuntu Live. Und damit – als debianisches OS – sehr gut geeignet. Auf die eigentliche Installation von Debian werde ich hier nicht eingehen. Doch ein paar Besonderheiten gibt es bei serverloft zu beachten.

Nach der Installation wird man feststellen das die Festplatten bzw. das RAID nur sehr langsam schreibt (~16 MB/s). Abhilfe schafft das aktivieren des Schreib Puffers auf den eigentlichen Festplatten. Damit das funktioniert müssen die Kernelmodule sg und mptctl geladen sein. Danach stehen die Geräte /dev/sg* zu Verfügung. Das eigentliche aktivieren des Schreib Puffers erfolgt mittels sdparm.

sdparm -s WCE=1 /dev/sg0
sdparm -s WCE=1 /dev/sg1

Um die IPMI Konsole aus dem OS heraus ansprechen zu können (mittels ipmitool) müssen die Kernelmodule ipmi_si und ipmi_devintf geladen werden. Leider sind diese (oder der Controller) instabil oder schlecht implementiert. Nach einiger Zeit läuft dann der Kernelthread [kipmi] mit 100% CPU Last. Wir haben die Kernelmodule also wieder deaktiviert. Wir benötigen die Funktionalität eh nicht. Ach ja, versucht nicht die Kernelmodule zu „unloaden“ (wie sagt man das?). Dies hat zur Folge dass sich das IPMI aufhängt. Danach muss der Server physikalisch kurz vom Strom genommen werden. Unschön.

Netzwerksetup

Das einrichten des Netzwerks gestaltete sich als recht kompliziert. Zum einen wollten wir ein virtuelles LAN. Zum anderen war auch die direkte Anbindung der web-domU nicht trivial. Normalerweise hängt man hierzu einfach alle Domains an eine Bridge welche mit dem Router verbunden ist.

Die Router von Serverloft akzeptieren jedoch nur die eigentliche MAC Adresse. Geholfen haben 2 Alternative XEN Netzwerkskripte. Zum einen das network-script Fridu Script. Zum anderen ein leicht angepasstes vif-bridge Skript. Diese beiden Skripte müssen in der xend-config.sxp entsprechend eingetragen werden. Zum Beispiel so:

(network-script 'Fridu-network.script LAN:192.168.1.1:255.255.255.0')
(vif-script 'vif-tp bridge="LAN"')

Die zugehörige DomU Konfiguration sieht dann z.B. so aus:

vif         =
[
 'ip=192.168.1.4,mac=00:16:3e:26:5e:0b,bridge=LAN,vifname=l-web',
 'ip=85.25.178.202,mac=00:16:3e:7d:82:65,bridge=none,vifname=e-web'
]

Wie oben bereits erwähnt wird das externe Interface mit einer Point2Point Verbindung durch die Dom0 geschleift. Dazu muss in der DomU für eth1 folgendes in /etc/network/interfaces stehen:

auto eth1
iface eth1 inet static
  address $_öffentliche_IP_$
  netmask 255.255.255.255 ## Netzmaske ist wichtig
  up /sbin/route add default dev eth1
  up /sbin/route add default gw $_öffentliche_IP_der_dom0_$

Wie ihr merkt hab ich das ganze schon nicht mehr so richtig verstanden. Ist schon fast ne Woche her. Aber vielleicht hilft es dem einen oder anderen (oder auch mir in Zukunft wenn ich es mal wieder verstehen muss) Beispiel zu haben.

WordPress

Das iPhoneBlog ist eine WordPress Installation. Benötigt wird daher ein Webserver mit PHP Unterstützung sowie eine mySQL Datenbank. iPhoneBlog.de wird aktuell mit etwa fünf Anfragen pro Sekunde im Tagesmittel, mit Spitzenwerten von 15 pro Sekunde beschossen. http_hits.pngDas Übersteht diese Hardware zwar auch in einer Default Installation. Doch sind die Ladezeiten dann nicht gerade optimal und die Kiste steht unnötig unter Last. Wir haben uns daher ausführlich mit dem optimalen Einstellungen auseinandergesetzt. Dies ist ein fortlaufender Prozess. Doch sind wir mit den bisherigen Optimierungen schon sehr zufrieden so dass wir dieses Wissen teilen möchten. Um Anregungen zu erhalten und oder auch einen Startpunkt für andere zu geben die eine ähnliche Last zu bewältigen haben.

apache-logo.jpg.jpeg

Als Webserver standen zur Auswahl lighttpd („lighty“) und Apache 2.x.

Entschieden habe ich mich für Apache. Mir ist bewusst das der „Lighty“ angeblich sau schnell ist. Aber wir machen teils sehr komplexe Dinge mit dem Webserver und ich wollte nicht das Risiko eingehen auf einen Webserver zu setzen mit dem ich bisher keine Erfahrungen gesammelt habe. Das war mir dann doch zu viel Arbeit.

Um die Ladezeiten des iPhoneBlog zu optimieren haben wir jede Menge unternommen. Die wichtigsten Kriterien waren/sind dabei: mod_mem_cache, wp_supercache, eacclerator und mod_expires. Auch wollen die werte max_clients und KeepAliveTimeout auf den vorhanden RAM angepasst weden.
Wordpress_Requests.png
In der Grafik wird der Weg geschrieben den jede Anfrage an WordPress geht. Desto weiter nach unten die Anfrage geht desto länger die Ladezeiten. Im „schlimmsten“ Fall muss mysql befragt werden.

Im Idealfall sind die Inhalte bereits im Browser Cache. Um diesen Idealfall möglichst oft zu erreichen bietet sich das Apache Modul mod_expires an. Damit kann man sehr gut steuern wie lange Inhalte zwischengespeichert werden. Eine Konfiguration könnte Beispielsweise so aussehen:

    ExpiresActive On
    # 1 Monat aufheben
    ExpiresByType image/gif A2592000
    ExpiresByType image/png A2592000
    ExpiresByType image/jpeg A2592000
    ExpiresByType application/x-javascript A2592000
    ExpiresByType text/javascript A2592000
    ExpiresByType application/x-shockwave-flash A2592000
    ExpiresByType text/css A2592000
    ExpiresByType application/rss+xml A900
    ExpiresDefault "modification plus 1 hour"

Überprüfen kann man den Erfolg sehr gut mit der Webdeveloper Konsole in Safari. Dort einfach mal einen Blick in die Response Headers werfen. Zu beachten sind die Werte Expires,Cache-Conrol und Pragma.
Dynamische Inhalte wie das HTML der Seite sollten natürlich nach Möglichkeit nicht vom Browser gecached werden.

mod_mem_cache verwenden wir um kleine Bilder, javascripts und Stylesheets im RAM vorzuhalten. Diese sind statisch und werden oft angefragt. mod_mem_cache verhält sich hier übrigens wie ein Browser Cache. Welche Inhalte wie lange und ob überhaupt vorgehalten werden entscheiden die durch mod_expires eingestellten Werte maßgeblich.

 CacheEnable mem /
 # Max Cache size in kb (32 MB)
 MCacheSize 32000
 MCacheMaxObjectCount 2000
 # Least recently used
 MCacheRemovalAlgorithm LRU
 MCacheMinObjectSize 1
 # Max Object size in byte (50kB)
 MCacheMaxObjectSize 50000

Beiträge (html) können nicht so pauschal gecached werden. Hierzu Bedarf es Logik der PHP Anwendung. Wenn man einen neuen Beitrag oder Kommentar verfasst soll der ja nicht erst Minuten später erscheinen, sondern sofort. Glücklicherweise gibt es für WordPress zwei sehr gute Plugins die sich genau hierauf verstehen. wp_cache bildet die Basis und kann in jedem WordPress Blog ohne Probleme installiert werden. wp_super_cache versteht sich als Addon zu wp_cache. Die Super Variante hat ihren Namen deshalb weil hiermit in den meisten Fällen nicht eine Zeile PHP ausgeführt werden muss.

wp_super_cache speichert dazu fertige HTML Seiten in einem Verzeichnis und löscht diese wieder sobald eine Aktualisierung des Inhalts stattgefunden hat. Das diese fertigen HTML Seiten dann auch ausgeliefert werden erfolgt durch mod_rewrite Regeln. Im Prinzip wird einfach nur geschaut ob für die angefragte Seite bereits eine Version im Cache existiert. Wenn dem so ist wird diese ausgeliefert.

# Gekürzter Auszug
RewriteCond supercache/%{HTTP_HOST}/$1/index.html -f
RewriteRule ^(.*) supercache/%{HTTP_HOST}/$1/index.html [L]

Zu WordPress selbst und mysql gibt es nicht viel zu sagen. Als einzige Optimierungsmöglichkeit bleibt hier einen PHP Beschleuniger einzusetzen. Wir verwenden dazu eaccelerator. Eine hervorragende Installationsanleitung für Debian findet sich hier.

eacclerator.png

Dieses PHP Plugin sorgt dafür das PHP Skripte nur beim ersten Aufruf Interpretiert werden. Der Bytecode der Skripte wird im Speicher vorgehalten. Das bringt ein wenig mehr Tempo. Deutlich reduziert sich jedoch die CPU Last (siehe Grafik).

Um die nötigen mysql Anfragen wenigstens schnell auszuführen Bedarf es einer Beobachtung über einen längeren Zeitraum. Hilfestellungen kann das SKript tuning-primer.sh. Es schaut sich einige Laufzeitvariablen an und gibt entsprechende Vorschläge oder Erklärungen. Sollte man jedoch nicht zu ernst nehmen.

Apache Allgemein

Wir verwenden die Apache Variante mpm_prefork. mpm_worker kommt vielleicht irgendwann. Ist mir derzeit jedoch zu viel Arbeit. Zwei sehr wichtige Parameter die es zu beachten gilt sind KeepAliveTimeout und MaxClients.

Den Keep Alive Timeout möchte man am liebsten sehr hoch haben. Er gibt die Zeit in Sekunden an bevor die Verbindung zu einem Browser beendet wird. Er sollte in jedem Fall nicht kleiner als 2 oder 3 Sekunden sein. Sonst würde ggf. bei langsamen Verbindungen während dem Laden einer Seite die Verbindung immer wieder beendet. Dadurch wird es noch langsamer. 4 Sekunden ist denke ich default und sinnvoll. Wenn man es sich erlauben kann (Kriterien folgen) ist auch ein sehr viel höherer Wert von Vorteil. Viele Besucher lesen einen Artikel kurz einige Sekunden an und besuchen dann eine andere Seite. Wenn dann die Verbindung noch gehalten wird geht das einen Tick schneller. Dies bedeutet jedoch das man mindestens 20 Sekunden rechnen sollte damit jemand davon profitiert. Ein Wert von 10 macht in meinen Augen z.B. keinen Sinn. Dann kann man auch gleich auf 3. Wir haben derzeit 25 Sekunden eingestellt.

Der Wert MaxClients gibt an wie viele Apache Prozesse maximal laufen dürfen. Das ist hauptsächlich eine Frage des vorhanden Arbeitsspeichers. Der RAM Bedarf eines apache Prozesses hängt von den geladenen Modulen und anderen Faktoren ab. Um einen idealen Wert für MaxClients zu finden ist die Faustformel Freier Speicher / RSS Size eines Prozesses. In unserem Fall stehen ungefähr 2 GB für Apache zu Verfügung. Der Speicherbedarf eines einzelnen Prozesses ist etwa 20 MB. Es ergibt sich also ein Wert von 100 (2000 MB geteilt durch 20 MB).

http_stats.png

Kommen wir noch mal zurück auf den Keep Alive Wert. Eine Verbindung die gehalten (Keep Alive) wert belegt einen Apache Prozess. Dieser kann solange keine anderen Besucher bedienen. Man benötigt also bei entsprechend hohen Keep Alive Werten auch eine entsprechend hohe Zahl von Max Clients. Zum beobachten verwendet man am besten mod_status. mod_status zeigt wie viele Prozesse gerade frei sind, wie viele im Status Keep-Alive sind, usw…
Sollten einmal keine freien Prozesse zu Verfügung stehen muss der Besucher solange warten. Nicht wünschenswert. Den KeepAlive Wert muss man bei steigenden Besucherzahlen also ggf. anpassen.


Ich hoffe ich konnte euch einen kleinen Einblick in meine Welt geben. Hoffentlich kann der eine oder andere davon profitieren. Am tollsten wäre natürlich wenn ihr noch Anregungen oder Fragen in den Kommentaren abgebt. Ich steige gerne in eine Diskussion ein. Ursprünglich wollte ich noch ein paar mehr Dinge ansprechen (z.B. das Monitoring). Aber das wird wohl in einem weiteren Artikel kommen. Ist lang genug geworden.

  • Thorsten

VoIP-Client Skype und sein Medienbuzz

Skype – Wikipedia.jpg

Über die adoptierte Ebay-Tochter Skype laufen dieser Tage alle Newsticker heiß. Die wohl iPhone-relevanteste Nachricht schüttelt Gigaom aus dem Ärmel einer nicht näher genannten Quelle. Danach soll sich eine native iPhone-Applikation in der Entwicklung befinden, die bereits innerhalb der nächsten Woche den App Store erreichen könnte.

Soweit so unzuverlässig.

Trotzdem bleibt das Thema diskussionswürdig, da Skype bereits Clients auf Windows Mobile, Pocket PC, Sony PSP sowie allerlei Symbian-Geräten und den drei großen Betriebssystem-Plattformen zur Verfügung stellt. Damit erreicht die VoIP-Firma 405 Millionen registrierte Benutzer und erwirtschaftete allein im letzten Jahr 550 Millionen US-Dollar.

Vor einigen Tage gab das Unternehmen einen möglicherweise spielentscheidenen Schachzug preis: Das derzeit verwendete proprietäre Skype-Protokoll soll einen Bruder bekommen, der sich ‚Session Initiation Protocol‚ – kurz SIP – nennt. In der IP-Telefonie ist SIP ein sehr häufig angewandtes Protokoll und könnte den Skype-Benutzerkreis besonders im Firmenumfeld stark erweitern.

Zwar hantiert Skype mit mehr internationalen Telefongesprächen als der Telco-Gigant AT&T, um das solide Wachstum auszubauen bedarf es jedoch den Schritt auf das Mobilfunktelefon.

Mitte Februar verkündeten Skype und Nokia dazu den nur logischen Schritt einer Zusammenarbeit: Von dem GSMA ‚Mobile World Congress 2009‘ aus Barcelona verlautet es, dass der finnische Mobilfunk-Konzern in sein Flaggschiff-Gerät N97 einen Skype-Client integriert. Weitere Mobilfunktelefone sollen folgen.

Und hier schließt sich erneut der geskypte iPhone-Kreis.

Derzeit existieren lediglich einige Drittprogramme wie Truphone (kostenlos; App Store-Link), Nimbuzz (kostenlos; App Store-Link) oder Fring (kostenlos; App Store-Link), die eure Skype-Freunde vom iPhone aus kontaktieren können. Wer damit schon länger gespielt hat weiß, dass die VoIP-Integration nur mässig bis unzuverlässig funktioniert.

Obendrein fällt die Nutzbarkeit einer mobilen Skype-Applikation mit der Möglichkeit auch über das UMTS-Netz seine Skype-Kontakte anrufen zu können. Dagegen wehren sich bislang jedoch erfolgreich alle Mobilfunkanbieter sowie Apple, die um exklusive Partnerverträge bangen müssten. Die verfügbaren App Store-Programme sprechen daher lediglich aus dem WiFi-Netz mit euren Skype-Freunden.

Alle verfügbaren Jailbreak-Hacks einmal ausgeschlossen, greift eine portable Skype-Applikation für das iPhone weiter die Festnetz-Telefonie (und seine Endgeräte) an, der heilige beschützte Mobilfunkanbieter-Gral wäre jedoch weiterhin in sicherer Hand.

[KlimBim] 2009-03-27

senza-titolo-210.png

Wie Apple am gestrigen Donnerstag verkündete, wird ihre hauseigene Entwickler-Konferenz dieses Jahr vom 8. bis zum 12. Juni im Moscone Center in San Francisco stattfinden. Neben komplett-haltlosen Gerüchten um neue Hardware zu diesem Zeitpunkt, bedarf es keiner hellseherischen Fähigkeit, das auf der diesjährigen WWDC neben dem (großen) OS-Betriebssystem-Update auch der bereits angekündigte Firmware-Aktualisierung des iPhones grösserer Platz eingeräumt wird.


» iPhone 3.0 now with SquirrelFish Extreme? _ Wayne Pan_s Blog - tech | js | ui | ajax | life | mobile-1.jpg

Unsere Browser werden immer schneller. Auch der im iPhone verbaute ‚Mobile Safari‘. Mit dem Firmware-Sprung von 1.x auf 2.0 im letzten Sommer, legte die WebKit-Performance speziell im Bereich JavaScript und HTML-Rendering ordentlich zu.

Wayne Pan warf jetzt einen ersten, frühen Blick auf den in Firmware 3.0 integrierten SquirrelFish, den Webkit JavaScript-Interpreter, der sich aktuell ‚Nitro‘ nennen möchte. Gegenüber der aktuellen Firmware-Version soll die Leistung um das 3- bis 10fache gesteigert worden sein.

via Daring Fireball


Publication Images.jpg

Apple zeichnet weitere, furiose Patentanträge.

Unter der Überschrift Embedded Authentication Systems in an Electronic Device wird ein biometrischer Authentifikations-Mechnismus beschrieben, der mit Zuhilfenahme verschiedener Sensoren Zugangsbeschränkungen zu Touch-Geräten erlaubt oder verbietet. Die beigefügten Zeichnungen des Patent-Dokumentes aus dem Herbst 2008 dürfte über die Identität des beschriebenen Gerät wenig Zweifel aufkommen lassen.

restrictions.jpg

Bereits Ende 2007 eingereicht, aber erst jetzt öffentlich bekannt geworden, ein weiterer Patentantrag mit der Bezeichnung Intelligent Restriction of Device Operations. Darin geht es um ein Navigations-System mit Touch-Steuerung, das über unterschiedliche Benutzugns-Restriktionen für Fahrer und Beifahrer entscheiden kann.


Convertbot

Convertbot (0.79 €; App Store-Link) ist ein optisch-anspruchsvoller Konvertierungs-Umrechner für Maß-, Gewichts, Währungs-, Längen oder Energie-Einheiten. Außerdem kann Convertbot mit Druck-, Temperatur-, Zeit-, Volumen und Flächen-Angaben umgehen.

In der aktuellen App Store-Version 1.0 befindet sich jedoch ein schöner Bug, den Entwickler Tapbots unter der Blog-Überschrift ‚Ich bin ein Dummkopf‚ beschrieben hat. Dabei wird für alle Benutzer falsch konvertiert, die als ‚regionales Zahlenformat‘ den Punkt als Dezimal-Trennzeichen verwenden. Wer – wie hier üblich – anstelle des Punktes ein Komma benutzt, rechnet falsch um.

Das Update 1.0.1 ist jedoch bereits eingereicht und sollte innerhalb der nächsten Tage Convertbot auch mit den hiesig-üblichen Einstellung des deutschen Zahlenformates sinnvoll nutzbar machen.

[podcast] BUS #139

bitsundso485.jpg.jpeg

Politisch

Neben wenigen Mac-Themen und nach einer extensiven iPhone-Woche, vergeben wir diesen Donnerstag kostenfreie Anregungen sich mit wichtigen politischen Themenbereichen auseinanderzusetzen. Die Aufforderung lautet sich Gedanken zu machen und eine Meinung zu bilden!

Wer darüber hinaus auch tätig wird, darf auf ein paar Motivationsfördermittel im angeschlossenen Gewinnspiel hoffen. Vornehmlich belohnt man sich durch politisches Engagement  jedoch selbst.

***

In voller epischer Breite kann man uns wie gewohnt unter Bits und so verfolgen; einfach direkt in Episode 139 reinhören oder bequem per iTunes abonnieren. In diesem Sinne, viel Freude mit der neuen Folge.

Erweiterte Realität mit 3D Touch-Tierchen

Dieser Tage findet im Moscone Center in San Francisco die Game Developers Conference statt. Wirft man einen Blick in die Twittersphäre (#gdc) oder auf den Konferenz-Plan, beherrscht auch hier das iPhone die Gemüter.

Und obwohl die ‚klassische‘ Videospielbranche sich eher schwer damit tut, neue Mitbewerber in ihren eingeschworenen Kreis aufzunehmen, sprechen sowohl Qualität als auch Quantität der App Store Spiel-Erscheinungen eine deutliche Sprache.

Impressive Augmented Reality Game Possibilities on the iPhone | Touch Arcade.jpg

Neben den aktuell-veröffentlichten und im letzten Jahr sehr erfolgreichen Titeln, beherrschen auch immer wieder wissenschaftliche Projekte das Geschehen im Moscone Center. TouchArcade traft auf der Messe einen Professor von der ‚School of Interactive Computing‘ aus Atlanta. Mr Blair MacIntyre arbeitet am Institut für ‚Augmented Environment‘, eine Wissenschaft, die sich mit der computergestützten Erweiterung von Realitätswahrnehmung beschäftigt.

PlayStation 3-Jünger kennen bestimmt noch das Kartenspiel ‚Eye of Judgment‚, das mit Kamera-Unterstützung zu einem interaktiven Videospiel mutierte.

Professor MacIntyre zeigt ein Projekt, welches er in Zusammenarbeit mit seinen Studenten entwickelt. Barcodes werden dabei unter Zuhilfenahme der iPhone-Kamera erkannt und stellen ein virtuelles Haustier auf dem Bildschirm dar. Durch Interaktionen per Fingerzeig kann das Tier (in diesem Fall ein Hund) gestreichelt und von A nach B geschickt werden.

Insgesamt sehr beeindruckend.

DirektAugmentedReality

Genauso spannend ist die Technologie-Demonstration, der zweidimensionalen Photo-Landkarte, die mithilfe computergestützter Erkennung zum dreidimensionalen Spiele-Spektakel wird. YouTube kennt unter dem Stichwort ‚Augmented Reality‚ noch mehr Demo-Material. Von vorstellbaren ‚World of Warcraft‘-Umgebung bis zu interaktivem GoogleMaps-Kartenmaterial darf geträumt werden:

DirektZombie

Diese und andere Einblicke in die Entwicklung von interaktiven 3D-Welten sind der Grund, warum ich seit jeher Bleeding Edge-Technologie aufsauge, konsumiere und darüber schreibe!

(Danke, Sebastian)

Three20 – Open Source iPhone-Bibliothek

Joe Hewitt ist Software-Entwickler in Kalifornien und beteiligt sich mit seiner Arbeitskraft an der nativen Facebook-Applikation (kostenlos; App Store-Link) für das iPhone.

Selbst eingeschworene Freunde des sozialen Netzwerkes verlieren ausschließlich positive Worte über das App Store-Programm. Gerade nach der aktuellen Layout-Überarbeitung der Facebook-Webseite, wird die schlanke und extrem ‚iphoneartige‘ Benutzeroberfläche der Applikation geschätzt.

Unter dem Projektnamen ‚Three20‘ veröffentlicht Hewitt nun seine Objective-C iPhone Bibliothek unter Apache-Lizenz. Das Projekt ist nach den 320 Breitbild-Pixeln des iPhones benannt und beinhaltet eine Kollektion aus iPhone UI-Klassen, die ihren Weg auch ins Facebook-Programm schafften.

Mit der offenen Verteilung des Quellcodes, stehen somit allen Entwicklern auf Github die sehr stilsicheren Facebook-Vorlagen zum Download bereit. Hewitt bezeichnet die Code-Qualität von ‚Photo Viewer‘ bis ‚Message Composer‘ als ‚Alpha-fähig‘.

-> joehewitt / three20

via Joe Hewitt

[app] Trails – GPS Logbuch

Einen wahren Geheimtipp, der von mir hier bislang publizistisch zu wenig Beachtung fand, gibt’s mit Trails (2.39 €; App Store-Link) für alle GPS-Enthusiasten.

Das App Store-Programm zeichnet die GPS-Koordinaten eures iPhone 3Gs auf und erstellt wunderschöne Pfade in einer Karte von OpenStreetMap. So können Positionsbestimmungen bei Wanderausflügen, Stadtrundgängen oder Autofahrten kinderleicht aufgezeichnet werden.

Nach dem ‚Marsch‘ übertragt ihr die GPX-Dateien auf euren Rechner, zu Google Earth, einem Onlinedienstleister für Wanderkarten oder gleicht die Zeitstempel mit den unterwegs geschossenen Photos ab.

Doch alles der Reihe nach.

Mit dem Start der Applikation holt sich Trails ein aktuelles GPS-Signal. Zum Nachladen des Live-Kartenmaterials benötigt ihr eine Internetverbindung. Wertvollen iPhone-Strom könnt ihr einsparen und die UMTS-Verbindung ausschließen. Trails arbeitet auch mit EDGE oder GPRS hervorragend zusammen, muss jedoch zum jetzigen Firmware-Stand dauerhaft laufen, um eure Strecke konstant aufzuzeichnen. Zwar könnt ihr das Display vom iPhone ausschalten, die Applikation darf jedoch nicht beendet werden. Das Problem ist hier natürlich an Apple zu adressieren, die mit Firmware 3.0 hoffentlich noch den einen oder anderen Kniff in der Hinterhand halten um dieses ‚Problem‘ zu lösen.

Nichtsdestotrotz könnt ihr problemlos eure iPhone Musikbibliothek starten und während die Titelwiedergabe läuft, eine GPS-Aufzeichnung beginnen. Je nach Konfiguration und Fortbewegungsmittel setzt Trails alle paar Hundertmeter einen Wegpunkt aus Längen- und Breitengrad sowie dem dazugehörigen Zeitstempel.

trails3.jpg

Diese Aufzeichnung kann beliebig unterbrochen, wiederaufgenommen oder zu einem späteren Zeitpunkt fortgesetzt werden. Wenn ihr dann von eurer Fahrradtour zurückkehrt, übertragt ihr die gesammelten Daten per E-Mail auf euren Rechner oder zu Everytrail, Bikely oder MapMyRun.

Diese Online Wegführer bieten euch die Möglichkeit weitere Touren auszuarbeiten, das Kartenmaterial eures Ausfluges zu drucken oder einfach nur mit dem Trainings-Logbuch zu prallen. Trails lässt sich ebenfalls dafür verwenden, Online gespeicherte Workouts oder Wanderrouten auf das iPhone zu importieren.

Geotagging

Für alle photobegeisterten Menschen dient Trails außerdem als kostengünstiger GPS-Logger. Wer nicht die sagenhaften Möglichkeiten der integrierten iPhone-Kamera ausspielen möchte (hüstel…hüstel), greift auf eine Qualitäts-SLR zurück und verquickt per Zeitstempel die geschossen Photos mit der von Trails aufgezeichneten Route. Sicherlich bietet Profi-Equitment umfangreichere und präzisere Einstellungsmöglichkeiten, für 2.39 € ist Trails jedoch mit Abstand der kostengünstigste Kandidat im (hier) nicht vorhandenen Testfeld.

Wer sich über alle Geotagging-Möglichkeiten informieren möchte, schaut den bereits empfohlenen ScreenCast von Don McAllister in voller Länge auf der Trails Entwickler-Homepage.

trails - Intuitive GPS tracking on the iPhone.jpg

-> Geotag your photos using Trails on the iPhone

Trails von Felix Lamouroux ist bereits auf mehreren Favoritenlisten ganz oben platziert. Wer nur ein wenig Interesse an GPS-Daten für Wanderungen aufbringt oder seine (nicht iPhone-) Photos mit Längen- und Breitengraden versehen möchte, greift für 2.39 € definitiv zu.

Auch die Umstellung vom lizensierten Google Maps-Kartenmaterial zu OpenStreetMap gefällt mir und gibt ein paar zusätzliche Sympathiepunkte.

trails-iTunes-1.jpg

-> App Store-Link

[KlimBim] 2009-03-25

Der Cydia-Store akzeptiert ab sofort auch PayPal-Zahlungen, interessiert mit seinen ganzen drei verfügbaren Applikationen jedoch weiterhin niemanden.

An die Standard-Funktionalität des iPhones aufgeschlossen hat dagegen das Jailbreak-Programm ‚CyDelete‘. Es ermöglicht das Löschen von inoffiziellen Cydia-Applikationen direkt im Springboard.


中国联通__3G专题.jpg

Der chinesische Mobilfunkanbieter China Unicom richtet auf einer seiner Internetseiten (übersetzte Version) eine Produktplatzierung für das iPhone 3G ein.

Ein Blick auf die weltweite iPhone-Karte von Apple zeigt jedoch, dass der chinesische Markt weder aktuell versorgt wird, noch auf der Länderliste für die ‚in Kürze‘ bedienten Märkte auftaucht. Auch das Erscheinungsdatum mit Juli 2008 (!) verwirrt.

Gegenüber MacWorld.co.uk bestätigte jedoch ein nicht näher genannter Unicom-Sprecher die iPhone-Verhandlungen mit Apple. Gerüchteweise gingen Gespräche mit dem chinesischen Mobilfunkanbieter China Mobile voraus, die schon lange das Apple Telefon in einem der weltweit größten Mobilfunkmärkte etablieren sollten.


Carl Zeiss Pressemitteilung_ Das Kino für unterwegs.jpg

Die Cinemizer Plus Videobrille erhält mit ihrer überarbeiteten Version nun auch das ‚Works with iPhone‘-Logo. Ich hatte vor einigen Monaten die 399 EUR-Brille zum Test vorliegen, war von der Videoqualität und dem Sitzkomfort jedoch nur mäßig begeistert.

Über das Bild in der Pressemitteilung sollte man sich jedoch auf jeden Fall noch einmal Gedanken machen…

via zeiss.de


iEmoji.jpg

Anfang März machten wilde Gerüchte die große Blogrunde, dass Apple alle Emoji-Applikationen aus dem App Store verbannt. Groß passiert ist neben ein paar Bauernopfern jedoch nichts. Der neuste Programm-Kandidat zur Aktivierung der kleinen Bildchen heißt iEmoji (kostenlos; App Store-Link) und genießt den treffenden Zusatz ‚unlock Emoji‘.


independent games festival.jpg

Die prämierten iPhone-Titel des ‚Independent Games Festivals‘ bekommen eine eigene App Store-Unterseite (App Store-Link) zugesprochen. Ganz uneingebildet sei erwähnt, das dort auch Radio Flare mit einem iPhoneBlog-Zitat aus unserem Review auftaucht.

Aber das wirklich nur am Rande…

via Tap to Play!