PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Serverload extrem hoch - Falsche Config? Apache2



dread66
27.09.06, 07:29
Hallo zusammen,

wir haben auf unserem Server ein kleines Problem. Wir haben etwa 300-400 Benutzer online im Forum, in den letzten Tagen gab es allerdings einige Probleme mit dem Apache, der den Serverload auf teilweise über 100 hochgeschossen hat. Die Prozessliste zeigte xxxxxx httpd Prozesse an, es liegt also mit Sicherheit am Apache. Die Frage ist jetzt nur, eine falsche Config oder ein Angriff. Wenn man den Apache dann stoppt und wartet, bis der Serverload wieder im normalen Bereich ist (zwischen 0,xx und 3,xx) funktioniert es wieder.

Vielleicht kann sich mal jemand die Fehlermeldungen im error.log anschauen und die Config.

Achja, der Server ist ein AMD 4200+ X2 Dual Core, 2 GB RAM, 2x 160 GB SATA.
Debian 3.1, Apache 2.0.54, PHP 4.3.10-16 und MySQL 4.

Error.log:


[Tue Sep 26 20:12:01 2006] [error] server reached MaxClients setting, consider raising the MaxClients setting
[Tue Sep 26 20:27:36 2006]
[Tue Sep 26 20:27:30 2006] [warn] child process 27341 still did not exit, sending a SIGTERM
[Tue Sep 26 20:27:30 2006] [warn] child process 27344 still did not exit, sending a SIGTERM
[Tue Sep 26 20:27:30 2006] [warn] child process 27715 still did not exit, sending a SIGTERM
[....] Hier folgt dann die selbe Fehlermeldung ein paar 100x
[error] child process 27985 still did not exit, sending a SIGKILL
[Tue Sep 26 20:27:36 2006] [error] child process 27986 still did not exit, sending a SIGKILL
[Tue Sep 26 20:27:37 2006] [notice] caught SIGTERM, shutting down


Ausschnitt aus der apache2.conf



LockFile /var/lock/apache2/accept.lock
PidFile /var/run/apache2.pid
Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
#<IfModule prefork.c>
#StartServers 5
#MinSpareServers 5
#MaxSpareServers 10
#MaxClients 256
#MaxRequestsPerChild 0
#</IfModule>

# pthread MPM
<IfModule worker.c>
StartServers 10
MaxClients 150
MinSpareThreads 10
MaxSpareThreads 15
ThreadsPerChild 10
MaxRequestsPerChild 500
</IfModule>

# perchild MPM
#<IfModule perchild.c>
#NumServers 5
#StartThreads 5
#MinSpareThreads 5
#MaxSpareThreads 10
#MaxThreadsPerChild 20
#MaxRequestsPerChild 0
#AcceptMutex fcntl
#</IfModule>

Wie gesagt, das Forum sollte ca. 300-500 User tragen können.


Vielen Dank für eure Hilfe.

dread

oracle2025
27.09.06, 08:08
Was sagen die access logs? Gibt's vielleich einen Angriff? Oder einen amoklaufenden Suchmaschienen Bot?

Standbye
27.09.06, 08:45
MaxRequests per Child würd eich hochsetzen

wenn nur ein forum udn keine weiteren webseiten auf dem server laufen evtl
lighthttpd zu empfehlen

ich glaube ehr weniger das es ddos attacken sind, wenn doch mod_evasive


Die Logs sachen "Reached Max Clients setting" setz das mal noch hoch, ansonsten mal über ein PHPAccelorator gedacht oder ein phpCache?, helfen bei foren Recht viel.