Hi,
Ich habe eigentlich die Erfahrung gemacht, dass es hier im Webumfeld zwar Unterschiede gibt, aber man kann nicht wirklich sagen ob jetzt mod_php schneller ist oder auch mod_perl, mal das eine, mal das andere, je nach Aufgabe und Implementierung. Auch die verwendete Konfiguration und Version hat teilweise erheblichen Einfluss. Z.B. gab es kürzlich einen Bug in scandir(), nach dessen Behebung die Funktion um mehr als eine Zehnerpotenz schneller wurde. Dafür gabe es letztens auch einen neuen Bug, durch den die Serialisierung von Daten ebenfalls in vergleichbaren Dimensionen langsamer wurde... Dazu kommen auch Verbesserung, z.B. in foreach() in einer der letzten Versionen... und in Perl wird es vermutlich ähnlich sein, wenngleich die Entwicklung hier etwas anders verläuft ;-)
In PHP 5.0 z.B. lag das Augenmerk eher nicht so auf der Geschwindigkeit, sondern an neuen Features. Sehr viele größere Patches die die Geschwindigkeit sehr positiv beeinflussen sind erst jetzt in 5.1 eingeflossen, usw...
ok, ob perl oder php ist letztlich egal.
Ich entscheide das noch nicht.
Ich muß erstmal statisch extreme Geschwindigkeit hinbekommen.
Wenn ich auch Christophs Beitrag ansehe und die Benchmarks, die Du verlinkt hast, scheint mir im Moment schon der Apache nicht besonders toll zu sein.
Vielleicht wurde das aber dort auch lokal gemessen. Ich habe eine Fernmessung von einem anderen Server (allerdings im selben Netzwerk) gemacht. Mehr als 30 Seiten kamen da pro Sek. nicht.
Das wird sowieso noch lustig genug, weil dann sicherlich noch an der DB gedreht werden muß.
Ja, aber kommt halt drauf an was Du da für Anfragen hinschickst, und wieviele Daten die DB verarbeiten/speichern muss. Ist wieder die Frage was man hier cachen kann, in jedem Fall sollte man wohl die neue Client-Lib seit 4.1 verwenden, evtl. Prepared Statements oder noch besser Stored Procedures.
Ist schon klar. Die Fragen dazu kommen morgen! ;-)
Ich sprach die ganze Zeit von einem gleichzeitigen Request. Wenn man z.B. 10 gleichzeitig abfeuert, geht die Latence natürlich hoch.
Dazu benutze ich einen zweiten Server. Bei habe ich über PEN verbunden.
Das Teil ist super, scheint keinerlei eigene Latence zu haben. Aber bei den meisten Linux-Distris ist noch ein anderes (etwas komplexeres) Paket dabei, das sich pound nennt.
Wenn ich es richtig verstanden habe, hat das zusätzlich noch einen Cache/Proxy, was der PEN nicht hat. Hat jemand damit Erfahrungen?
ich nicht, aber was bringt Dir das? Ich gehe davon aus dass Du Dir ja was schönes zum Daten sammeln basteln willst (wie diese Bildchen hin und wieder), also muss ja jeder Request zum Server durchkommen.
Nee, für unsere Statistik brauche ich solche Antwortzeiten nicht!
Da gibt es ganz andere Anforderungen.
Aber Du liegst nicht ganz falsch, daß es mit einem unserer Produkte zusammenhängt! ;-)
Bringt ein Cache davor also nix. Ich würde auch erstmal keinen Load-Balancer verwenden, bis zu einem bestimmten Level wird er Dich eher ausbremsen, nämlich so lange bis die eine Maschien am Ende ist. Aber solange sie das nicht ist, kostst es nur unnötige Resourcen. Und bevor ich dann einen Load-Balancer anschaffe, würde bei mir erstmal der DB-Server auf eine eigene Maschine ausgelagert. Ich vermute auch, dass die DB viel schneller zum Engpass wird, als die Verarbeitung des Requests. Einen LoadBalancer davorschalten kann man immer noch. Muss man nur bei der Entwicklung im Hinterkopf haben, aber solange ein Zustand nur in einer einzigen DB gehalten wird, ist auch das weniger ein Problem.
Das sehe ich wirklich anders!
Ich habe Messungen gemacht, wo ich vorher 14-16 Anfragen (nicht statisch!) hinbekommen habe, entstanden mit zwei Servern mehr als 25.
D.h. es ergibt sich keine Verdopplung durch zwei Server, aber erstens beugt man einem Ausfall vor und die Latenzen gehen runter.
Zudem dient es der Datensicherung. Der zweite Server läuft in Replikation.
Ich betreibe gerade etwas Forschung, wie ich mit möglichst wenig (Hardware-)Aufwand auf ca. 60 Anfragen pro Sekunde kommen kann...
Das kommt drauf an was Du genau machen musst um einen Request zu bearbeiten. Noch effizienter als ein eigenes Webserver Modul wäre vermutlich ein eigener Webserver (zumindest wenn man weiß was man tut ;-)). Wenn Du Perl verwenden willst, wäre es vielleicht Dank cpan nicht so schwer ein Perl Script als Webserver laufen zu lassen, der wirklich nur das macht und kann, was Du brauchst. Wenn Du nur so Sachen machst wie DB-Zugriffe und das senden von ganz bestimmten Bildern und Headern, dann sollte es kein großes Problem sein. Deutlich effizienter dürfte es mit C funktionieren, allerdings auch deutlich anspruchvoller.
By the way, nochmals vielen Dank für die Tips.
Ich glaube, da sind viele brauchbare Dinge dabei!
Gruß
Reiner