httpd-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Harald Weidner <hweidner-li...@gmx.net>
Subject Re: AW: Irgendetwas stoppt dasAusführen der CGI´s
Date Sun, 23 Nov 2003 00:48:30 GMT
Hallo,

>Ich habe dasselbe Problem merkwürdigerweise auf zwei Servern.
>Beide Server zeigen aber mit ulimit -a dasselbe an.
>
># ulimit -a
>open files                    (-n) 1024
>max user processes            (-u) 256

>Ich habe davon nicht viel Ahnung, aber kann das sein, daß
>der Apache User nicht mehr als 256 Prozesse gleichzeitig haben darf?

Nach obiger Ausgabe von ulimit, ja. Ein Apache 1.3 kann aber generell
nicht mehr als 256 gleichzeitige Client-Requests bearbeiten, es sei
denn, Du hast ihn selber compiliert und vorher die Konstante
HARD_SERVER_LIMIT hochgesetzt.

Je nachdem, was Du in der httpd.conf bei MaxClients eingetragen hast,
kann aber auch schon vorher Schluss sein.

>Wenn ja, wäre das schon eine Erklärung.
>Unter Apache Server Status stehen bei diesem Server oft mehr als
>256 requests currently being processed.

Du kannst mit ListenBacklog die Größe der Warteschlage beeinflussen.
Die Requests in der Warteschlange werden aber erst bearbeitet, wenn
ein anderer Request fertig ist, d.h. der User wartet solange auf die
Webseite.

Bei so vielen gleichzeitigen Prozessen kann auch die maximale Anzahl
an Filedeskriptoren von 1024 ein Problem sein. Wenn das CGI-Programm
keinen neuen Filedeskriptor mehr bekommen kann, kann es durchaus
abstürzen, je nachdem, wie es programmiert ist.

>Der Server hatte auch schon zetenweise eine Load Aerage von über 40.00
>Ohne, dass die CGI gestoppt worden sind.

Bei diesen Größenordnungen ist es vielleicht nicht verkehrt, über Load
Balancing mit einem oder mehreren weiteren Servern nachzudenken.

>Wie gesagt, auf dem Server werden auch große Dateien mit 100 - 200 MB
>Herunter geladen. Der Speicher wird also auch ein Thema sein. 

Der Speicher ist bei Downloads eigentlich egal, da Apache das File von
der Festplatte liest und es direkt an den Client schickt. Nur müssen
die parallelen Apache-Prozesse alle in den Speicher passen. Wenn der
Server erst mal zu Swappen beginnt, dann ist er bei dieser Last nicht
mehr länger zu gebrauchen.

>Welche Möglichkeit gibt es dieses Problem zu stoppen?
>Der Server wird nur als Webserer eingesetzt, also keine Mail Accounts
>Und nur eine mysql confixx Datenbank.

Die Datenbank könnte auch ein Problem sein. Auf meinem Debian-3.0
basierten Server ist MySQL so voreingestellt, dass es nur 100
gleichzeitige Verbindungen zulässt. Das heisst, das 101te CGI-Skript
bekommt keine Datenbankverbindung mehr. Man beachte, dass mod_php und
mod_perl basierte Skripte die Verbindungen i.d.R. auch dann offen
halten, wenn gerade kein Request zu bearbeiten ist.

Gruß, Harald

-- 
Harald Weidner                           hweidner@gmx.net

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Mime
View raw message