Beiträge getagged mit Tools

Traffic Monitoring mit vnstat

Viele Internetnutzer haben mittlerweile eine Trafficflatrate und müssen sich über das verbauchte Transfervolumen keine Gedanken machen, aber im Wohnheim, bei Servern oder UMTS Verträgen sind Trafficbeschränkungen noch gang und gäbe. Da ich gern informiert sein wollte, wie viel Traffic mein Server verbraucht habe ich mir vnstat installiert.

Unter Ubuntu kann man vnstat einfach mit dem Paketmanager installieren. Danach muss man das Netzwerkinterface, welches überwacht werden soll, hinzufügen.

sudo apt-get install vnstat
sudo vnstat -u -i

Von nun an Zeichnet vnstat auf, wie viel Traffic über die angegebene Schnittstelle verschickt oder empfangen wird. Etwas später kann man sich dann den verbrauchten Traffic anzeigen lassen:

david@ubuntu-server:~$ vnstat
Database updated: Mon Mar 15 18:50:01 2010

	eth0

	   received:       1.09 GB (68.7%)
	transmitted:     507.82 MB (31.3%)
	      total:       1.58 GB

	                rx     |     tx     |  total
	-----------------------+------------+-----------
	yesterday     16.37 MB |   74.81 MB |   91.19 MB
	    today      4.15 MB |   49.71 MB |   53.86 MB
	-----------------------+------------+-----------
	estimated         5 MB |      62 MB |      67 MB

Mit den Optionen –months –days –hours kann man sich dann die jeweiligen Zusammenfassungen anzeigen lassen.

Da ich gern eine tägliche Zusammenfassung per Mail haben wollte, habe ich mir noch ein Shellscript geschrieben, welches mir täglich eine Übersicht des verbrauchten Traffics schickt. So hat man mit vnstat ein einfaches, aber ausreichendes Traffic Monitoring installiert. Zusätzlich könnte man sich noch das vnstat PHP frontend installieren.

, ,

4 Kommentare

Xdebug – PHP Profiler

Heute möchte ich euch wieder ein Tool vorstellen, mit dem man die Performance seiner PHP Anwendung testen kann bzw. die Performance-Engpässe in der Anwendung aufspüren kann. Xdebug wird von vielen als Debugger in der Entwicklungsphase genutzt, bietet aber auch einen Profiler. Viele kennen Profiler nur aus Kriminalserien im Fernsehen, aber ein Entwickler sollte damit auch ein Tool zur Performance-Analyse von Anwendungen in Verbindung bringen. Profiler aus dem Fernsehen erzeugen Täterprofile anhand von operativen Analysen, ähnliches macht ein Software-Profiler auch, er erzeugt Softwareprofile anhand operativer Analysen.

Die Funktionsweise eines Profilers lässt sich am besten anhand eines Beispiels/Tutorials erklären. Also fangen wir an:

Unter Ubuntu lässt sich Xdebug sehr einfach installieren:

sudo apt-get install php5-xdebug

Danach ist Xdebug installiert und automatisch aktiviert, nun müssen wir nur noch den Profiler in der php.ini aktivieren. Wenn man den Profiler in der globalen php.ini aktiviert, wird jedes ausgeführt PHP Skript aufgezeichnet, deshalb kann es sinnvoll sein, die Einstellung in einer htaccess oder lokalen php.ini zu setzen, oder die Einstellung xdebug.profiler_enable_trigger zu nutzen. Da ich auf einem Testserver Arbeite, aktiviere ich den Profiler in der globalen php.ini (folgendes in der php.ini hinzufügen):

xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp/xdebug"
xdebug.profiler_output_name="trace%s"

Mit den Einstellungen haben wir den Profiler aktiviert, danach müssen wir natürlich den Apache neustarten (evtl. reicht auch ein reload):

sudo /etc/init.d/apache2 restart

Jetzt müssen wir nur noch eine Seite (natürlich von dem konfigurierten Server) im Browser öffnen und das Profiling beginnt. Nach dem Aufruf finden wir in dem oben angegebenen Verzeichnis ein Datei mit dem Namen der eben Aufgerufenen Seite (trace_name_der_datei).

Den Inhalt der Datei muss man natürlich nicht Zeile für Zeile lesen und einen Graphen auf Papier malen, sondern auch hierfür gibt es ein Tool. Das bekannteste ich wohl KCacheGrind (Linux KDE), oder MacCallGrind (wer hätte es gedacht: Mac OS). Betriebssystem unabhängig gibt es noch WebGrind, ob man damit aber auch große CallGrinds analysieren kann weiss ich nicht. Falls ich noch ein Betriebssystem vergessen habe, solltet ihr einfach mal Google fragen (Stichwort: WinCacheGrind)! Meiner aktuellen Betriebssystemsituation geschuldet, stelle ich euch hier erstmal nur MacCallGrind vor. KCacheGrind zeige ich euch dann in einem späteren Beitrag, WinCacheGrind müsst ihr euch selbst angucken.

Ich habe folgendes Skript auswerten lassen:


<?php
  test();
  test();
  test();
  test();
  test();
  test();
  test();
  test();
  test();
  function test(){
    $i = 1;
    while($i < 10000) {
      $i++;
      echo "test";
      usleep(100);
    }
  }
?>

Das ganze sieht im MacCallGrind dann so aus (Einfach die erzeugten Dateien öffnen):

Nun kann man genau gucken wo die Ausführungszeit der Anwendung verschwindet, welche Funktion wie oft aufgerufen wird und wie lange die Ausführungen der einzelnen Funktionen dauern. Mit KCacheGrind kann man dann noch ein paar weitere Auswertungen anfertigen, aber dazu in einem späteren Beitrag mehr. Sonst ist MacCallGrind größtenteils selbsterklärend.

Meiner Meinung nach kann man so gute Analysen der eigenen Software machen, um Performance Engpässe schon bei der Entwicklung aufzuspüren und zu einer ordentlichen Softwareanalyse gehört es einfach dazu.

, , ,

3 Kommentare

Mal wieder ein PHP Buch

Lange hatte ich das Buch nur im Schrank stehen, bis ich es vor ein paar Tagen mal gebrauchen konnte. Dabei handelt es sich um das Buch “Enterprise PHP Tools” von Stefan Priebsch.

Wie der Name es schon verrät, geht es in dem Buch um Tools, welche für die Entwicklung von Internetseiten interessant sind. Besonders für die Entwicklung in einem Team kann man auf bestimmte Programme wie zum Beispiel ein SVN Repository nicht verzichten. In dem Buch begleitet man zwei fiktionale Personen bei der Entwicklung einer neuen Internetseite. So gibt Stefan Priebsch einen sehr praxisorientierten Einstieg und legt außerdem die Gründe für die Verwendung der Programme dar. Auch die Installation und Konfiguration der Programme ist sowohl für Windows als auch für Linux gut erklärt.

Das Buch umfasst folgende  Themengebiete:

  • PHP Programme analysieren (Xdebug)
  • Quellcode Versionsverwaltung (Subversion)
  • Software testen (PHPUnit)
  • Dokumentation
  • Build Automation
  • Virtualisierung von Testsystemen

Fazit: Das Buch ist für die Entwicklung kleinerer Seiten eher uninteressant, ist aber für die erste Planung einer größeren Internetseite sehr hilfreich. Wer gerne auch mal ein Buch in der Hand hat, als immer nur Onlinetutorials zu lesen, liegt bei diesem Buch nicht falsch.

, ,

Keine Kommentare