also wir haben uns nun einmal mit memory_get_peak_usage() den peak des skripts ausgeben lassen. der liegt bei 2,5 mb?
illneaddix wrote:also wir haben uns nun einmal mit memory_get_peak_usage() den peak des skripts ausgeben lassen. der liegt bei 2,5 mb? da sollten dann doch 32 mb mehr als genug sein!
Wie habt ihr memory_get_peak_usage() aufgerufen - mit oder ohne Parameter? Und habt ihr das an den richtigen Stellen aufgerufen? Unmittelbar in der Zeile bevor das Script abstürzt? Und stürzt das Script dann auch ab?
Was steht denn in der besagten Zeile drin, wo der Speicher ausgeht? Vielleicht ist da eine dynamisch generierte Select-Anweisung, die (sporadisch) überläuft. Oder oder oder - der memory_get_peak_usage() nützt doch überhaupt nichts, wenn das Script fehlerfrei durchläuft.
$endOutput = $begin + 15;
Was ich aber immer noch verstehe - es tut doch nun wirkich nicht weh, den Wert von 32MB auf 128MB zu erhöhen - wieso probiert Ihr das nicht wenigstens einmal? Wenn die Fehlermeldung bleibt, kann man immer noch an anderen Stellen suchen, aber zunächst ist die angezeigte Fehlermeldung die stinknormale Fehlermeldung von PHP, wenn der Speicher alle ist.
aber man kann doch dem apache keinen speicher zuweisen, oder?
Wiedmann wrote:aber man kann doch dem apache keinen speicher zuweisen, oder?
Du kannst durchaus festlegen, wieviel Speicher ein einzelner Prozess haben darf (max. anfordern darf). Also in Windows, nicht in der Apache Config. Und wenn der Apache insgesamt sein Limit aufgebraucht hat, kann es einem PHP Script auch nicht (keinen) mehr Speicher zur Ausführung geben.
Mal mit ganz simplen Zahlen:
- der Apache (oder irgendein einzelner Prozess) darf max 10MB haben (bei 100 installierten gesamt MB's, können also 10 Prozesse garantiert laufen)
- es laufen bereits 3 Scripte mit jeweils 3 MB = der Apache verbraucht also jetzt schon 9 von 10 MB's
- ein 4. Script gleichzeitig das 3 MB benötigt, könnte nicht laufen, da nur noch 1 MB zur Verfügung steht
Das Ganze ist also völlig unabhängig vom memory_limit der php.ini, das in diesem Beispiel z.B. auf 5 MB steht, was ja für die einzelnen PHP Scripte an sich reichen würde.
Ein Bug kann das natürlich trotzdem sein, wenn z.B. der Apache oder eine PHP-Extension nicht benötigten Speicher nciht mehr freigibt, und daher im Laufe der Zeit immer mehr benötigt. Da können wir aber auch nicht helfen.
Du kann nur schauen, ob du in diesem (oder einem anderen Script) einen Übeltäter findest, der viel Speicher braucht. Oder halt den passenden Server zu deinem System verwenden...
Wiedmann wrote:Du kannst durchaus festlegen, wieviel Speicher ein einzelner Prozess haben darf (max. anfordern darf). Also in Windows, nicht in der Apache Config.
illneaddix wrote:denn der speicher sollte ja nach dem aufruf wieder freigegeben werden. theoretisch.
Wiedmann wrote:Ein Bug kann das natürlich trotzdem sein, wenn z.B. der Apache oder eine PHP-Extension nicht benötigten Speicher nicht mehr freigibt, und daher im Laufe der Zeit immer mehr benötigt.
Nobbie wrote:Wie kann man auf Betriebssystemebene (Registry?) einem bestimmten Prozess eine bestimmte Menge max. Speichernutzung zuordnen?
Wiedmann wrote:Bei einem VServer (um den es ja hier wohl geht), gibt es aber auch alle möglichen 3rd-Party Tools dafür (welche dann auch schon die VServer verwalten).
Sorry, es handelt sich um keinen V-Server.
Wiedmann wrote:Sorry, es handelt sich um keinen V-Server.
Wenn du selbst der Admin eines Windows 2003er Servers bist, weist du natürlich auch über eben Resource Policies bescheid,
Und dann kann man immer noch nicht einfach einstellen "Apache - 10MB" - das geht so nicht.
Ne, nur wenn das installiert ist,
Wiedmann wrote:Bei den Werten dürfte ja sonst PHP (bzw. Apache) nicht der Speicher ausgehen.
Users browsing this forum: No registered users and 49 guests