Wie werden GEZ-Gebühren für Webserver und Büro-PCs aufgeteilt?

Ich habe zwischenzeitlich (bereits am 18.3.) eine „Antwort“ auf meine Anfrage an die GEZ erhalten (vom Operativen Marketing).

Ich schreibe „Antwort“ in Anführungszeichen, denn es war eine „Lies das und halt die Klappe“ Antwort mit einem einfachen Hinweis auf den Geschäftsbericht der GEZ war. Den vollständigen Brief darf ich hier mal wieder nicht veröffentlichen, da mir das laut Signatur verboten ist – aber es steht sowieso nichts sinnvolles drin.

Hier meine Reaktion auf dieses Schreiben:

Sehr geehrte Frau       ,

vielen Dank für Ihre E-Mail Antwort. Leider kann ich aus dem Geschäftsbericht nicht erkennen, was wir im Gegenzug für die von uns geleisteten Zahlungen erhalten haben.

2007 hat die Firma Interdose 132.48 Euro für die Arbeits-PCs und die Webserver zahlen müssen. Ihrem Geschäftsbericht habe ich entnehmen können, dass diese wie folgt verteilt wurden:

* 97,54 Euro an ARD und die Unter-Sender (WDR, SWR, NDR, BR, …)
* 31,62 Euro an ZDF
* 3,32 Euro an Deutschlandradio

Davon wurde außerdem noch die GEZ selbst finanziert. Diese Beträge sind wohl – wenn ich das richtig verstanden habe – anteilig von den Beträgen abzuziehen, die unter den Sendern aufgeteilt wurden:

* 0.89 Euro für Gehälter der GEZ-Mitarbeiter
* 0.27 Euro für Soziale Aufwendungen der GEZ
* 0.04 Euro für Materialaufwendungen der GEZ
* 1.58 Euro für durch GEZ verursachte Mietkosten, Porto, Kosten durch IT-Dienstleistungen und ähnliches

Allerdings wird mir selbst mit diesem Wissen nicht klar, was wir davon hatten außer unnötigen Kosten. Unsere Büro-PCs werden nicht für den Konsum von Öffentlich-Rechtlichen Fernseh- oder Radioprogrammen verwendet und unsere Webserver, Datenbankserver und sonstigen Server sind noch nicht mal mit Bildschirmen oder Lautsprechern ausgestattet, stehen in einem lauten und unbequemen Rechenzentrum und haben ganz sicher andere Aufgaben als Fernsehbilder oder Radio abzuspielen. Es muss also einen anderen Grund geben, der es rechtfertigt, uns diese Kosten aufzuzwingen.

Ich würde gerne diesen Grund von Ihnen erfahren. Ansonsten werde ich demnächst – gerne auch mit rechtlicher Unterstützung durch einen sachkundigen Anwalt – die Zahlungsverpflichtung anzweifeln und die Anmeldung unserer Firmen-PCs zurückziehen.

Ich verweise auch auf…
* VG Braunschweig (Urteil 4 A 149/07)
http://www.dbovg.niedersachsen.de/Entscheidung.asp?Ind=0510020070001494%20A
Betrieb des Firmen PCs in der bereits mit GEZ-Gebühren für vorhandene Geräte belegten Privatwohnung

Bitte beachten Sie, dass ich dieses Schreiben wieder auf meinem Blog unter http://blog.deobald.org/ veröffentlichen werde und bitte Sie, mir und meinen Lesern eine Antwort zukommen zu lassen, die ich dort zugänglich machen kann, da meine Frage nicht nur mich, sondern sicher auch tausende anderer Firmeninhaber beschäftigen wird.

Mit freundlichen Grüßen,
Dominik Deobald

Mal sehen, welche Standardantwort ich dieses mal bekomme…

Offener Brief an die GEZ

Folgende E-Mail ist soeben an die GEZ rausgegangen

Sehr geehrte Damen und Herren.

Seit zwei Jahren bezahlen wir für unsere Webserver und für unsere Arbeitsrechner im Büro jetzt schon brav unsere GEZ-Gebühren. Insgesamt sind das über 250 Euro, die Sie von uns erhalten haben.

Darf ich fragen, welche Gegenleistung sie mir gegenüber erbringen, die diese Zahlungen rechtfertigt?

Bitte beachten Sie: Dieses Anschreiben und den folgenden Schriftverkehr sehe ich als offene Briefe an und werde sie auf meinem Blog auf http://blog.deobald.org/ veröffentlichen. Da sie mir sicher gute Gründe nennen können, wo mein Gewinn an dieser Zahlung zu finden ist, wird ihre Antwort sicher auch viele andere Selbständige interessieren und viele Unklarheiten beseitigen.

Mit freundlichen Grüßen,
Dominik Deobald

Bin ja mal gespannt, was ich darauf als Antwort bekomme.

Lustiges Server-Basteln

Wir sind ja (mal wieder) mitten im Umbauen unserer Server-Struktur. Dieses mal hoffentlich vorerst zum letzten mal – jedenfalls haben wir inzwischen alle Hardware, die wir gern von anfang an gehabt hätten.

Ab heute läuft mein Blog auf zwei getrennten Servern – einer, der die Webseite „ausführt“ (also der Webserver) und einem, der die Datenbank hält (also dem Datenbankserver). Mal sehen, ob das jetzt weitgehend funktioniert. Aber ich bin zuversichtlich 🙂

Ab mitte des Monats wollen wir dann unsere neuen Webserver in Betrieb nehmen, die sich die Last teilen – und noch wichtiger: Die gegenseitig einspringen, wenn einer der Server mal ausfallen sollte.

Und: Nein, das ist nicht primär für meinen Blog, sondern für unsere anderen Webseiten relevant. Der Blog ist da nur ein Nutznießer.

Abstürze durch PHP OpCode Caches

Thomas Kruse hat auf seinem Blog everflux seine Erfahrungen zur Stabilität mit den diversen OpCode Caches veröffentlicht – mit einem ziemlich eindeutigen Ergebnis: Sie sind es allesamt nicht. Abstürze gehören wohl zur Regel.

Jetzt kommt der Haken: Ich kann das nicht bestätigen.

Wir setzen seit langem auf einigen unserer Webserver (zukünftig wohl auf allen) eAccelerator ein, und haben damit noch nie Probleme gehabt. Derzeit laufen alle unsere Server auf Intel-Prozessoren, und der Wechsel zu 64bit Betriebssystemen steht erst jetzt an – vielleicht ändert das etwas. Wir werden sehen.

Ausserdem hängt die Instabilität – allen Berichten zufolge – auch stark mit den eingesetzten Scripten zusammen.

Wir sind in der glücklichen Lage, das ohne große Auswirkungen für unsere Besucher herausfinden zu können – mehreren identische Webservern hinter einem guten Load Balancer und leistungsfähigem Server-Monitoring sei dank.

Sollte sich dann etwas anderes herausstellen, dann gibt’s das natürlich hier zu lesen.

Benchmarking PHP: eAccelerator und andere OpCode Caches

Die Aufgabenstellung: Die Applikationen aus unserem Hause sollen so stabil und leistungsfähig laufen wie möglich. Ein wichtiger Bestandteil der Applikations-Infrastruktur stellen in unserem Bereich die Webserver dar, die PHP-Unterstützung mitbringen müssen.

Bei meinen Versuchen, die bestmögliche, unseren Anforderungen entsprechende Serverkonfiguration zu finden, habe ich ein paar Benchmarks gemacht, die ich hier mit der Welt teilen möchte.

Die Benchmarks

Im ersten Schritt habe ich diverse OpCode Caches und den ZEND Optimizer ausprobiert.

Das Testsystem ist ein DELL PowerEdge R200 Server mit einem Core2Duo E4500 Prozessor und 4GB RAM. Darauf zugegriffen wurde über ein lokales 100 MBit Netzwerk.

Der Server läuft auf Debian Linux (64bit), als Webserver-Software kam Apache 2.2.3 mit PHP 5.2.0 über mod_php zum Einsatz. Allesamt wurden aus den Debian-Paketen installiert.

Für meine Benchmarks habe ich drei verschiedene Scripte verwendet:

  • KCAPTCHA
    Ein Script, das Captcha-Bildchen erzeugt. Dieses Script verwendet zwar relativ viel die GD2 Grafik-Library, wodurch ein großer Teil des Programmablaufs genaugenommen „fix“ ist, weil die Geschwindigkeit von GD2 nicht durch die Optimierungen verändert wird. Das Programm führt aber auch einige Schleifen und Berechnungen in PHP durch, um die Grafik vor der Ausgabe zu verzerren.
  • Viel Code, wenig Ausführung
    Das zweite war ein eigentlich sehr einfaches, selbst geschriebenes Script, das nicht viel mehr gemacht hat, als die Zahlen von 1 bis 100 in einer Schleife auszugeben. Zusätzlich habe ich allerdings (absichtlich sinnloserweise) eine 20 KByte große PHP-Datei includiert, die einige Funktionen enthält, die ich bei meinen Projekten regelmäßig verwende. Damit sollte sich die reine Aufruf-Geschwindigkeit messen lassen, ohne durch eine Script-Laufzeit groß beeinflusst zu werden.
  • WordPress
    Last, but not least, um etwas praxisnäher zu testen: Eine WordPress 2.3-Installation, in die ich mit ein paar Blindtexten gefüllt habe. Als Datenbank kam eine ebenfalls lokal auf dem Server installierte MySQL-Instanz zum Einsatz.

Als Optimierer kamen zum Einsatz:

An den Einstellungen der verschiedenen Optimizer habe ich nichts geändert, also so weit überhaupt möglich immer die Standard-Einstellungen verwendet.

Was ist ein OpCode Cache?

eAccelerator, XCache und APC stellen OpCode Caches dar. Ohne einen solchen wird bei PHP bei jedem Script-Aufruf das entsprechende Script frisch „compiliert“ und dann ausgeführt. Wenn man aber einen OpCode Cache installiert, so werden die compilierten Scripte im Speicher gehalten, so dass sie bei einem weiteren Aufruf aus der Konserve verwendet werden können. Das spart ab dem zweiten Aufruf die Compilierungs-Zeit.

Einige der Caches bringen auch noch einen Optimizer mit.

Was ist ein OpCode Optimizer?

Der ZEND Optimizer dagegen ist ein OpCode Optimizer, der versucht, PHP-Scripte bei der Compilierung zu optimieren, sie also schneller zu machen. Als Beispiel kann man sich beispielsweise eine „kleine Schleife“ vorstellen:

for ($i = 0; $i < 3; $i++) {
echo 'Schleife<br />';
}
echo 'Schleife<br />';
echo 'Schleife<br />';
echo 'Schleife<br />';

Beide Beispiele ergeben das gleiche Resultat. Das obere Beispiel ist als Programmcode vielleicht ein bisschen „hübscher“ anzusehen. Trotzdem ist die untere Variante etwas schneller. Es müssen keine Variablen initialisiert, verglichen und hochgezählt werden, es muss nicht „im Programm zurückgesprungen“ werden. Klarer Geschwindigkeitsgewinn. Noch schneller wäre es als eine einzelne „echo“-Anweisung.

Solche Muster zu erkennen und zu ersetzen ist die Aufgabe eines OpCode Optimizers.

Benchmark 1: KCaptcha

Jetzt aber zu den Testergebnissen. Um die Geschwindigkeit zu überprüfen kam das Tool Apache Benchmark. Mit diesem habe ich von einem anderen Rechner über’s Netzwerk jeweils 10.000 Anfragen an die drei Test-Scripts abgefeuert, jeweils mit 20 parallel laufenden Anfragen.

Zuerst KCAPTCHA:

Die Skala unten gibt an, wie viele Sekunden für die 10.000 Aufrufe benötigt wurden.

Klarer Gewinner hier: Der eAccelerator.

zend + eaccelerator 177,54 Sek.
eaccelerator 177,60 Sek.
xcache 183,39 Sek.
apc 187,46 Sek.
none 190,00 Sek.
zend 225,10 Sek.

Auf den ersten Blick etwas überraschend mag wirken, dass der ZEND Optimizer sowohl auf dem ersten, als auch auf dem letzten Platz zu finden ist – ja sogar langsamer ist, als wenn man ganz auf den Einsatz einer Optimierung verzichtet. Die Lösung: Im Alleingang ohne OpCode Cache braucht der Optimizer mehr Zeit zum Optimieren, als durch die Optimierungen eingespart wird.

Im Gegenzug dazu kann der Optimizer in Kombination mit dem Cache seine Stärke ausspielen: Hier muss nur ein mal optimiert werden. Bei den folgenden 9.999 Aufrufen wird auf den bereits optimierten Code zugegriffen. Bei KCAPTCHA war die Ersparnis aber eher gering, was an der Struktur des Programmcodes liegt. Hier ist einfach nicht viel zu optimieren.

Benchmark 2: Test-Script „viel Code, wenig Ausführung“

Ein ähnliches Bild ergibt sich beim zweiten Testscript:

Hier tritt noch mehr in den Vorschein, dass der ZEND Optimizer die Laufzeit optimiert. Da dieses Script aber nahezu keine „Laufzeit“ hat, sondern nahezu nur aus Compilieren besteht, liegt der ZEND Optimizer auch dieses mal ganz hinten. Wieder ist der eAccelerator der Gewinner:

eaccelerator 2,40 Sek.
apc 2,48 Sek.
xcache 2,51 Sek.
zend + eaccelerator 2,85 Sek.
none 11,60 Sek.
zend 13,80 Sek.

Man sieht aber eindeutig den Vorteil, den ein OpCode Cache mitbringt. Von 11,6 Sekunden auf 2,4 Sekunden sind durchaus spürbar.

Benchmark 3: WordPress

Zum Abschluss noch ein „praxisnäheres“ Beispiel: Im dritten Durchlauf habe ich noch eine WordPress Installation getestet, indem ich 10.000 mal die Startseite aufgerufen habe. Ziel war es, herauszufinden, ob der ZEND Optimizer an dieser Stelle seine Asse ausspielen kann.

Auch dieses mal liegt der ZEND Optimizer ohne OpCode Cache abgeschlagen hinten. Was mich allerdings ein bisschen überrascht hat: Mit eingeschaltetem eAccelerator schnitt er immer noch schlechter ab, als der eAccelerator alleine.

eaccelerator 490,74 Sek.
xcache 501,41 Sek.
apc 501,45 Sek.
zend + eaccelerator 506,40 Sek.
none 873,98 Sek.
zend 928,10 Sek.

Fazit

Was die OpCode Caches angeht kann man eindeutig feststellen, dass es sich sehr lohnt, einen zu installieren. Der eAccelerator hat bei all meinen Tests als Sieger abgeschnitten, aber auch die anderen beiden Kandidaten haben sich nur unwesentlich schlechter geschlagen. Die Geschwindigkeitsgewinne gegenüber „Kein Cache“ sind schwer in Zahlen auszudrücken, da sie von Anwendung zu Anwendung schwanken (abhängig des Verhältnisses „Compilierung“ zu „Laufzeit“). Gerade bei WordPress, der getesteten Anwendung lag sie aber bei spürbaren 78% Leistungssteigerung.

Dagegen muss ich anhand der Ergebnisse meiner Tests von der Installation des ZEND Optimizers abraten, so lange nicht wichtige Gründe dafür vorliegen, warum er laufen muss. Im Normalfall ist er kontraproduktiv und verbraucht mehr Ressourcen als er einspart.

So viel zum ersten Teil meiner Forschungsreise. Im nächsten werde ich die Performance verschiedene Caching-Mechanismen vergleichen.