PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CGI-Applikation beschleunigen



chrigu
05.04.06, 11:09
Hallo zusammen,
Wir betreiben eine grössere BSCW-Installation (http://www.bscw.de). Diese Webapplikation ist in Python geschrieben und wir per mod_cgi auf einem Apache2 betrieben.
Momentan verwenden wir einen apache2-mpm-prefork. MaxClients ist dabei auf 256 eingestellt.
Irgendwie läuft der BSCW aber recht träge. Wäre fastcgi eine Möglichkeit, die Geschwindigkeit zu erhöhen? Oder ein anderer Apache2? Ein Worker?
Leider habe ich keine Ahnung von CGI, wäre nett wenn mich da jemand mal ein bisschen aufklären könnte ;)

Gruss,
Chrigu

marce
05.04.06, 11:12
kommt drauf an, woran es hakt... fast_cgi beschleunigt nicht die Applikation an sich, sondern hält nur mehr oder weniger Prozesse vor, um auf requests zu reagieren - wenn also das Laden des CGIs an sich schon zu lange dauert (bzw. das generieren des Prozesses) kann es positive Auswirkungen haben - wenn es allerdings an der Applikation an sich hakt (oder z.B. einer DB dahinter) werdet ihr so nichts erreichen...

cane
05.04.06, 11:53
Was braucht denn solange?

Was läuft sonst auf der Kiste?

Ist der Apache optimal kompiliert und konfiguriert?

Ist der ganze für euch unnütze Kram deaktiviert?

Wie sieht die Netzlast aus?

Wie ist die Hardware ausgelastet?

Was sagen die I/O Statistiken?

Ohne massiv mehr Informationen ist das ne Raterunde...

mfg
cane

chrigu
05.04.06, 12:05
Was braucht denn solange?
Die Apache-Prozesse. Klar der BSCW-Prozess selber braucht auch Zeit, aber nicht soviel.


Was läuft sonst auf der Kiste?
Nichts, nur dieser BSCW


Ist der Apache optimal kompiliert und konfiguriert?
Ist ein Debian Sarge, der Apache2 ist per APT installiert. Die Prefork-Variante.
Konfiguration ist praktisch standard, eben ausser MaxClients auf 256 gesetzt.


Ist der ganze für euch unnütze Kram deaktiviert?
Was meinst du damit? Module sind nur die benötigten geladen.


Wie sieht die Netzlast aus?
Ist sehr tief. Gigabit bis zum Client, von daher auszuschliessen.


Wie ist die Hardware ausgelastet?
Das ist es ja, überhaupt nicht. Load ~1.0
Ich weiss einfach nicht, ob es an der Applikation selber liegt, oder am Webserver. Darum möchte ich wissen, ob es bessere Konfigurationen für den Webserver gibt. So wäre ich sicher, dass es die Applikation ist.


Was sagen die I/O Statistiken?
Wie kann ich das anzeigen lassen?

Gruss,
Chrigu

marce
05.04.06, 12:30
hm, lassen sich diese Prosa-Werte auch durch Zahlen darstellen?

Vor allem auch "etwas größere Installation", ...

chrigu
05.04.06, 13:08
hm, lassen sich diese Prosa-Werte auch durch Zahlen darstellen?
Vor allem auch "etwas größere Installation", ...
Klar, "etwas größere Installation" = ~5000 User

Mir geht es eigentlich darum, ob der Apache-Prefork geeignet ist, um CGI auszuführen, oder ob der Worker besser wäre?

oracle2025
05.04.06, 20:00
Schon mal mod_python probiert? Ausserdem willst du dich über fastcgi und scgi informieren, und auch bei dem Hersteller der Software nachfragen.

cane
06.04.06, 09:02
Ich würde als erste Maßnahme den Apache selbst kompilieren, außerdem tunen.

Ich hatte da mal ein Super-Howto zu, komm aber nicht drauf wo...

mfg
cane

chrigu
06.04.06, 09:22
Schon mal mod_python probiert? Ausserdem willst du dich über fastcgi und scgi informieren, und auch bei dem Hersteller der Software nachfragen.
Ja, beim Hersteller nachfragen wäre der nächste Schritt gewesen.
Fastcgi habe ich ausprobiert, eine wirkliche Steigerung war nicht bemerkbar.
Es hat sich aber glaube ich bestätigt, dass es eher an der Software liegt, als an der Server-Konfiguration, was mich schonmal beruhigt..


Ich würde als erste Maßnahme den Apache selbst kompilieren, außerdem tunen.

Mh wäre auch eine Möglichkeit. Gibt es Statistiken oder Erfahrungswerte von euch, was man da so rausholen kann?

Gruss,
Chrigu

marce
06.04.06, 09:25
da beim selbst kompilieren eigentlich nichts anderes passiert als bei dem, was der Distributur macht - und wenn ihr schon nur die nötigesten Module drin habt - dürfte der Effekt gegen 0 gehen (auch wenn jeder Gentoo-User protestieren wird :-) ) - jedenfalls solange ihr "normale" Standardhardware habt.

Ein bisschen was bringen könnte, die jetzigen Module statisch einbinden, aber das hat auch Nachteile...

cane
06.04.06, 09:51
*outet sich als Gentoo-User* :)

Das Kompilieren bringt schon etwas, zum Beispiel könnte es sein das der apache des Distributors auf i386 und nicht auf i686 kompiliert ist, dann noch die üblichen GCC-Optimierungen...

Könnte IMO schon einige Prozentpunkte bringen.

Spürbare Performancesteigerungen lassen sich aber wohl eher über die Konfiguration rausholen.

Wiegesagt, ich schau noch mal nach dem Artikel, ansonsten bemüh mal eine Suchmaschine...

Weitere Möglichkeit: Einen Proxy vorschalten der statische Inhaltselemnte im Cache vorhält und so den Apache entlastet...

Oder gleich ein Loadbalancer :)

mfg
cane