Ein weiteres PHP-out-of-memory-problem mit apache
Ich weiß, es ist eine alte Frage! Aber dieses mal habe ich die situation wieder anders.
Ich bin mit php/mysql/apache unter OpenSuse. Ich habe php mit 128 MB Speicher. Ich habe keine RLimitMEM
für apache.
Alles war in Ordnung, die Vögel singen, die Blumen blühen, aber sobald ich Neustart mein apache dann schlimme Dinge passiert sind!
Bekomme ich PHP Fatal error: out of memory blah blah
. Alle php-powered-Anwendungen waren in Ordnung arbeiten, jetzt melden Sie diesen Fehler. Was ist passiert? Ich habe versucht memory_limit = 512M ohne Fortschritt.
Ich bin verwirrt, warum alle meine php-Dateien nun diesen Fehler auslösen, außer wirklich kleinen scripts. Ich habe versucht, phpinfo() und ich habe wirklich 128MB Speicher es. ( Und ich weiß, dass php-apache-ini-Einstellung unterscheidet sich von der standalone php-konfigurierte ich die richtige! ).
UPDATE:
genaue php-Fehler Beispiele:
[Mon Jul 25 04:22:25 2011] [error] [client 31.57.122.252] PHP Fatal error: Out of memory (allocated 1048576) (tried to allocate 491520 bytes) in /srv/www/htdocs/phpMyAdmin/libraries/common.inc.php on line 796
[Mon Jul 25 04:26:39 2011] [error] [client 31.57.122.252] PHP Fatal error: Out of memory (allocated 1048576) (tried to allocate 4 bytes) in /srv/sbuta/library/Zend/Config/Ini.php on line 172
[Mon Jul 25 04:27:02 2011] [error] [client 31.57.122.252] PHP Fatal error: Out of memory (allocated 1048576) (tried to allocate 30720 bytes) in /srv/kode/library/Zend/Config/Ini.php on line 132
Schauen Sie in Ihren RCS-commit-Protokoll. Finde die änderung, brach alles. Revert.
vielen Dank für Ihre Beratung. Ich immer tun.
Geret'kal, um ehrlich zu sein, ich weiß nicht, wie das geht!! Ich hatte ursprünglich die Arbeit mit ubuntu. Ich bin nicht vertraut mit opensuse.
Stellen Sie sicher, nichts in der Anwendung die Einstellungen geändert.
InformationsquelleAutor Morteza Milani | 2011-07-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass es keine verbleibenden physischen Speicher!!! deaktivieren Sie einige php-oder apache-Module sollte das problem lösen.
Schritt für Schritt Anleitung(:D) :
/etc/php5/apache2/php.ini
Suche nachmemory_limit = ...
. ( um es zu testen, versuchen Sie, eine Datei mit einem seltsamen Namen es in Ihrem server mit diesem Inhalt:<?php echo phpinfo();?>
und siehe memory_limit Wert ).cd /etc/apache2/&& grep -irn 'RLimitMEM'
zu finden./etc/security/limits.conf
Erinnern apache neu starten nach jeder änderung zu testen.
InformationsquelleAutor Morteza Milani
Out of memory-Fehler sind die Folge von zu viel Daten im Arbeitsspeicher, die von Ihrem Skript. Wenn Sie eine Datenbank mit großen Datenmengen und ziehen die Daten mit fetchAll() anstelle von filtern, die Sie möglicherweise ausführen zuwenig Arbeitsspeicher sehr schnell. Ein weiteres problem sind Objekte, mit denen Sie die Speicherung großer Datenmengen. Nicht zuletzt können Sie eine Schleife fügt hinzu, dass Daten in den Speicher, bis er das limit erreicht.
Prüfen Sie scripts für Orte, an denen Sie ziehen die Daten und nutzen XDebug. Es kann Ihnen zeigen, die Erhöhung auf die Speichernutzung.
Update
Komisch. Die "out of memory" - Fehler, den Sie hier haben, ist nicht der Fehler, den Sie gewohnt erhalten Sie mit dem php memory_limit config ("memory exhausted") und da haben Sie es mit allen apps ist dies sogar noch klarer.
Scheint es eine Begrenzung der von der server-Umgebung, die in deinem Fall Apache. Vielleicht können Sie/müssen in der Tat auf eine
max
limit mit RLimitMEM in Ihre conf-Datei. Die Standardeinstellung ist die Verwendung der Betriebssystemen Standard ist Ihr OpenSuse. Wenn Sie plötzlich haben Einschränkungen für den Benutzer läuft dein Apache-Modul dies kann, um Ihre Apache-Umgebung und dann den ganzen Weg, um Ihre PHP-Skripte, die schließlich zu beschweren.2. Update
Zeit, das problem zu isolieren. Weil es begann, als Sie Ihren server neu gestartet und alle apps dieses problem Auftritt muss es etwas in der server-Umgebung. Versuchen zu starten und phpMyAdmin ausführen mit einer Standard-Apache-config. Wenn das schon den Fehler verursacht haben Sie Blick auf Ihrem linux-server.
Na dann, können Sie aktualisieren Sie Ihre Frage, indem die genaue Fehlermeldungen. bla bla, nicht wirklich helfen zu identifizieren, die Ursache des Problems. Während wir gerade dabei sind vielleicht auch XDebug trace von dem gleichen problem.
Ich bin sicher, es ist nicht ein memory-leak. denn wenn es war ist, nur eine domain ging in dieser situation nicht alle von Ihnen.
siehe mein update
Ich habe versucht
RLimitMEM = 9999999999999999
ohne Erfolg. immer noch der gleiche Fehler.InformationsquelleAutor Adrian World
PHP startet die Skripts für jeden neu laden; es sei denn, Sie Skript läuft 24/7, es wird nicht beeinflusst durch die weiter-Betriebszeit von Apache. Wenn Apache Speicherauslastung wächst, hat entweder mehr PHP-Prozesse oder es gerade angefangen zu Speicherverlust wie normal mit Apache und PHP.
Gegeben, Sie haben ein array, das hat 100000000 Elemente, die "foo" und Sie leiten Sie zu einer anderen Funktion, die Funktion call Kopien, dass array-Verdoppelung PHP-memory-usage. Durch die immer nur wenige Anrufe wie diese, können Sie leicht eine situation, in der Sie Ihr Skript aus dem Speicher.
InformationsquelleAutor Smar
Ich hatte dieses Problem auf einem meiner Server und es stellte sich heraus, dass ein problem mit dem Gnome3-desktop-Umgebung. Auf Debian-und Ubuntu-Server mit 2 GB Speicher oder weniger, wenn Sie die Gnome3 oder Unity-desktop-Umgebung installiert, es frisst so viel desktop-Speicher, es beginnt mit RAM, der apache braucht, das führt zu dem out of memory " - Fehlermeldung.
Beheben Sie das Problem durch Installation von "Gnome-Classic", Mate oder LXDE desktop-Umgebung und anmelden, statt.
InformationsquelleAutor Arnold Bath