CGI/DBI, PHP3, ASP - aktuelle Erfahrungsberichte bzgl. Geschwindigkeit ???
Christian Schnagl
- datenbank
Hallo Forum,
ich habe eine MySQL-Datenbank. Derzeit greife ich auf ca. 1.000 Datensätze (Produkte) mittels Perl/CGI und DBI-Modul zu. Jeder Datensatz enthält 20 Felder zuzüglich einem "Memo/Textfeld", daß ca. 1-3 kb enthält. Mehrere andere Tabellen sind mit der Produkt-Tabelle relationell verbunden. Es gibt also die Datenbank und EIN CGI-Script, daß die Produktpräsentation dynamisch regelt.
Meine Frage nun:
Welche Programmiersprache/Methode liefert mir bei mehreren hundert Zugriffen gleichzeitig die beste Performance? Soll ich umstellen auf PHP3 oder ASP ?
Finden/indexieren Suchmaschinen PHP-Seiten (besser als meine Perl/CGI - Lösung)?
Über aktuelle Erfahrungswerte wäre ich sehr dankbar.
Gruß
Christian Schnagl
PS: <protz&info> Da die Firma, für die ich arbeite selbst einen Server beim Provider stehen hat (mit flotter Anbindung), ist von dieser Seite keine Einschränkung zu beachten.</protz&info>
Hallo Christian,
Erfahrungfswerte oder gar Messungen kann ich Dir nicht bieten.
Aber prinzipiell solltest du, wenn es um Performance geht, nicht die Standard-CGI Schnittstelle verwenden, sondern ISAPI oder NSAPI oder eben dieses Fast-CGI (oder wie das heißt). Und zwar ganz einfach deshalb, weil bei Standard CGI für jede Anfrage das komplette Script in einen eigenen Bereich geladen wird. Sharing ist nicht möglich. Das hat Vor- und Nachteile. Ein Nachteil ist auf alle Fälle die schlechtere Performance.
Weiteren Performancegewinn erzielst Du duch geschickte Programmierung, durch Verwendung von Connection Pools (sofern unterstützt) und dergleichen.
Viele Grüße
Kess
Hallo,
Erfahrungfswerte oder gar Messungen kann ich Dir nicht bieten.
Aber prinzipiell solltest du, wenn es um Performance geht, nicht die Standard-CGI Schnittstelle verwenden, sondern ISAPI oder NSAPI oder eben dieses Fast-CGI (oder wie das heißt). ...
in der letzten C't wurde ja gerade ein von einem umfangreichen Vergleichstest zwischen Win-NT und Linux(Apache) - Webservern berichtet. Zumindest im Bereich CGI schien der Apache Server dabei deutlich im Vorteil zu sein (Faktor 3 oder mehr).
Ob sich Fast-CGI lohnt, hängt imho sehr von der Art der Datenbanknutzung ab. Falls die vielen Zugriffe jedesmal von woanders kommen, d.h. die typische Nutzung besteht jeweils nur in einer oder 2 Abfragen pro Benutzer und Session, dann sollte eine permanent aufgebaute Verbindung zum Webserver keinen so großen Vorteil bringen - im Gegensatz zu Sessions mit vielen aufeinanderfolgenden Abfragen.
Viele Grüße
Andreas
Hallo Andreas,
in der letzten C't ....schien der Apache Server dabei deutlich im Vorteil zu sein (Faktor 3 oder mehr).
Ich habe Apache unter Linux :-)
Ob sich Fast-CGI lohnt, hängt imho sehr von der Art der Datenbanknutzung ab. Falls die vielen Zugriffe jedesmal von woanders kommen, d.h. die typische Nutzung besteht jeweils nur in einer oder 2 Abfragen pro Benutzer und Session, dann sollte eine permanent aufgebaute Verbindung zum Webserver keinen so großen Vorteil bringen - im Gegensatz zu Sessions mit vielen aufeinanderfolgenden Abfragen.
Ich weiß nicht genau, wie Du das meinst. Ich schildere mal einen typischen Benutzerzugriff:
Der User kommt auf die Seite und ruft ein CGI-Script auf. Dort wird eine Liste der von ihm gewünschten Produkt-Kategorien angezeigt (2 SQL-Befehle). Aufgrund dieser Liste verzweigt er weiter zu einem CGI, daß das erste Produkt der gewählten Kategorie anzeigt und gleichzeitig eine Liste aller weiteren Produkte dieser Kategorie. (wieder 2 x SQL)
Ein Benutzer schaut ca. 5-10 Produkte an.
Daneben gibt es noch andere Dinge wie Gewinnspiele, etc... auf die der User nach belieben wechseln kann. Diese CGI‚s benutzen dann wiederum 1-2 SQL-Kommandos um Daten, Quizfragen, etc.. anzuzeigen.
Die CGI‚s sind 5-10 KB groß. Da für die Site auch TV-Werbung gemacht (werden) wird, rechne ich mit einem hohen Benutzeraufkommen gleichzeitig. Für genügend Bandbreite habe ich gesorgt. Jetzt ist die Frage, ob ein PIII mit UW-SCSI und entsprechend Speicher dafür langt oder ob ich den Server "programmiertechnisch" unterstützen kann/muss.
Danke schon mal, für die bisherigen Antworten!
Gruß
Christian Schnagl