Benchmariking und Überwachen von Webapps mit httperf, munin und gltail
Für unser letztes Projekt war Benchmarking und klare Aussagen über die Auslastung des Servers ein wichtiger Punkt. Daher haben wir uns ein paar Tools herangezogen die uns geholfen haben unsere Webapplikation (visuell) “im Griff” zu behalten.
Benchmarking mit httperf
Httperf ist in erster Linie ein Benchmarking-Tool dass die Durchsatzrate von Requests eines Webservers messen kann. Von httperf wird mit einer fixen Rate diese Requests an den Server geschickt und mit den angekommenen Replies verglichen. Der Output gibt uns Informationen zu der Dauer dieses Tests, der Fehlrate (Anzahl der nicht erhaltenen Replies).
Einen Beispielhaften Output kann man hier einsehen.
Das Ergebnis einer Messung sind:
- Daten über die TCP-Verbindungen
- RequestDaten
- Ergebnisse der empfangenen Replies
- CPU-und Netzdaten
- Auswertung der aufgetretenen Fehler (Timeouts)
Sehr interessant dabei ist das Resultat der Reply rate:
Reply rate [replies/s]: min 0.0 avg 4.9 max 10.8 stddev 4.2 (40 samples)
Diese gibt uns eine Auskunft über den Durchschnitt und die Standardabweichung der Antwortzeit. Diese Messungen sind genauer je mehr Stichproben während der ganzen Messung entnommen wurden. Durch die Optimierung des Programmcodes können diese Werte dann demensprechend verbessersert und dadurch eine schnellere Antwortzeit gemessen werden. Mehr Informationen zu httperf sind aus dem Manual zu entnehmen. Weitere Informationen kann man auch im Blogpost von Grig Gheorghiu nachlesen. Wer ein bisschen tiefer in die Materie einsteigen möchte, dem empfehlen wir den Screencast von Peepcode “Benchmarking with httperf”
Monitoring mit Munin
Um die Server während der Produktivbetriebs visuell im Blick zu haben empiehlt sich die Benutzung von Munin. Mit Munin ist es möglich die verschiedenen Prozesse/Daten des Servers zu visualisieren. Dazu werden so genannte munin-nodes installiert (die zu überwachenden Server). Diese Nodes werden dann auf dem Munin-Server aggregiert, verarbeitet und Visualisiert.
Standardmäßig bietet Munin Statistiken zu:
- Filesystem usage (in %)
- MySQL throughput
- MySQL queries
- …
Eine sehr schöne Eigenschaft von Munin ist, dass dieses Tool pluggable ist, d.h. es können verschiedene Skripte eingebunden werden. Wenn man Rails-Applikationen mit Phusion Passenger laufen lässt, stehen auf Github zwei nette Skripte zur Verfügung die man einfach in Munin einbinden kann. Mehr zu Munin-Plugins kann man in diesem Blogpost nachlesen.
Quasi-Echtzeitstatistiken mit glTail
Eine nette Ergänzung zur Überwachung von Webapplikationen ist gltail. Gltail bietet eine (quasi-)Echtzeit Darstellung von log-Files jeder Art. Dies kann natürlich dazu verwendet werden, um z.B. die Apache-Logs, Production-logs, etc. zu visualizieren.
[edge Rails] the rails command now supports templates
Setting up a new Rails project is pretty boring. Installing plugins, gems, adding initializers, etc. always the same monotonous work. - not fun.
That’s why there have been quite a lot of starter apps. Most of them are git repositories with blank Rails apps bundled with plugins and extensions. But those are unflexible and the cloning of different repos somehow feels not right. - it’s better but still not fun.
I’ve also tried to avoid the boring setup work with several tools. My first very, very hackish attempt was kickrails. A stupid ruby script that preceduraly runs all the build commands for me. - not fun either.
But then came RG. An awesome über cool project developed by Jeremy McAnally. RG allows you to kickstart your Rails app using templates written in ruby. - fun! ;) One command and your done. RG runs the rails command and setups all the stuff to get you started based on templates.
I’ve created a fork, added some more helpers and used it for several projects. It turned out great.
Anyway what I wanted to tell is: RG just got added to Rails core. This means the rails command now supports templates for building your inital apps. Running rails -m/–template my_super_cool.template not only generates the default rails skeleton for you but also applies the template which installs plugins, gems, extensions, initializes a git repository, etc. - pretty awesome - fun!
I’m as excited as I’ve been when I’ve ran the rails command for the first time.
How do you setup your rails app? Now compare that to:

Isn’t rails great?!
cool stuff on GitHub: sintaxi’s gap
phonegap.com: ”bridging the gap between the web and the iphone SDK”
“PhoneGap is a free open source development tool and framework that allows web developers to take advantage of the powerful features in the iPhone SDK from HTML and JavaScript. We’re trying to make iPhone app development easy and open. For many applications a web application is the way to but in Safari you don’t get access to the native iPhone APIs, and the that’s the problem we’re trying to solve.”


