![]() |
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 |
AW: php script bringt server zum absturz
z.B. über den Apache "Server-Status"
oder Logfiles und Errorfiles von Apachen. |
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!
|
AW: php script bringt server zum absturz
Du kannst in der php.ini einstellen, wie viel RAM ein Skript maximal belegen darf.
Bernhard |
AW: php script bringt server zum absturz
Zitat:
|
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 |
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?
|
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: ![]() |
AW: php script bringt server zum absturz
Ja, ich hab gerade eines geschrieben:
PHP-Quellcode:
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.
<?php
$myarray = new array(); while (true) { $myarray[] = mt_rand(); } ?> Bernhard EDIT: Aber eigentlich ist jedes laufende PHP-Skript in seiner Speicherauslastung begrenzt, sofern der Server gescheit eingerichtet ist. (siehe ![]() EDIT2: Hier sind ein paar Wege beschrieben, wie man PHP lahm legen kann. Die Version mit str_repeat könnte himitsu gemeint haben. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz