Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   php script bringt server zum absturz (https://www.delphipraxis.net/153899-php-script-bringt-server-zum-absturz.html)

geisi 19. Aug 2010 15:53

php script bringt server zum absturz
 
hallo!

habe einen webserver (2 GB RAM 4 GB Swap) am laufen, der über 100 Webseiten hostet. Jetzt stürtzt mir plötzlich ständig der komplette Server ab (Grund: Out_of_Memory). Im normalen Betrieb braucht er 500 MB - 1 GB Memory. Aber seit ein paar Tagen passiert es, dass plötzlich 10 - 20 apache2-Prozesse laufen und der Memory-Usage auf 2 GB RAM + 4 GB Swap ansteigt --> volle Auslastung.

Wie kann ich jetzt das fehlerhafte script lokalisieren bzw. was kann zur prevention getan werden?
Danke im Voraus

generic 19. Aug 2010 15:55

AW: php script bringt server zum absturz
 
z.B. über den Apache "Server-Status"
oder Logfiles und Errorfiles von Apachen.

geisi 19. Aug 2010 17:15

AW: php script bringt server zum absturz
 
die logfiles haben insgesamt ein paar millionen einträge (so ungefähr), was außer ERROR würde da ungefähr ausgegeben werden, wenn ein script so viel speicher benötigt, dass der webserver crashed? nur damit ich nach einem wort suchen könnte!

rollstuhlfahrer 19. Aug 2010 17:16

AW: php script bringt server zum absturz
 
Du kannst in der php.ini einstellen, wie viel RAM ein Skript maximal belegen darf.

Bernhard

XHelp 19. Aug 2010 17:28

AW: php script bringt server zum absturz
 
Zitat:

Zitat von geisi (Beitrag 1043473)
die logfiles haben insgesamt ein paar millionen einträge (so ungefähr)

Stichwörter: grep, tail

rollstuhlfahrer 19. Aug 2010 17:36

AW: php script bringt server zum absturz
 
Guck doch in den Server-Logs nach "Out_of_Memory". So erhälst du die Zeit, wann sich der Server verabschiedet hat. Dann guckst du in den Apache-Logs, was kurz davor war. Einer der Einträge wird dann der sein, den du suchst.

Bernhard

geisi 19. Aug 2010 17:45

AW: php script bringt server zum absturz
 
würde das gern mal nachstellen: hat jemand ein php-script, dass mir in einer endlos-schleife speicher reserviert, bis der arbeitsspeicher und der swap voll sind?

himitsu 19. Aug 2010 17:48

AW: php script bringt server zum absturz
 
PHP-Quellcode:
while (true) $s .= 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
.

Es gab aber auch irgendeine Funktion, über welche man zu Debuggingzwecke Speicher in Massen reservieren kann.


Leak ... konnte es aber auf php.net nich finden :gruebel:
http://selfphp.de/funktionsreferenz/...ionen/leak.php

rollstuhlfahrer 19. Aug 2010 17:51

AW: php script bringt server zum absturz
 
Ja, ich hab gerade eines geschrieben:

PHP-Quellcode:
<?php
$myarray = new array();
while (true) {
  $myarray[] = mt_rand();
}

?>
Mit diesem Code wird ein Array so lange mit Zufallszahlen vergrößert, bis es nicht mehr weiter geht. In so 5 Minuten sollte das Skript das RAM voll haben.

Bernhard

EDIT: Aber eigentlich ist jedes laufende PHP-Skript in seiner Speicherauslastung begrenzt, sofern der Server gescheit eingerichtet ist. (siehe hier)

EDIT2: Hier sind ein paar Wege beschrieben, wie man PHP lahm legen kann. Die Version mit str_repeat könnte himitsu gemeint haben. Link


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz