Sonstiges

Memory-Limit: Probleme mit Blog/Plugins?

das Memory_Limit in der Php.ini bedeutet laut Manual:

Setzt den Maximalwert des Speichers in Byte, den ein Skript verbrauchen darf. Damit können schlecht geschriebene Skripte daran gehindert werden, den gesamten verfügbaren Speicher eines Servers „aufzufressen“. Um diese Option nutzen zu können, muss sie während des Kompilierens aktiviert werden. D.h., Ihre Konfigurations-Zeile muss folgendes enthalten: –enable-memory-limit. Beachten Sie, dass Sie den Wert auf -1 setzen müssen, wenn Sie kein Speicherlimit wünschen.

Seit PHP 4.3.2 und wenn memory_limit aktiviert ist, steht die PHP Funktion memory_get_usage() zur Verfügung.

Die Php.ini ist keine Datei, die mit der WordPress/Bloginstallation daherkommt. Es handelt sich dabei um eine Konfigurationsdatei für Apache-Webserver, auf denen PHP als Skriptsprache läuft. Das dürfte bei den meisten Webhostingangeboten der Fall sein, dass PHP vorinstalliert ist. Ohne PHP kein WordPress. Auf Shared Hosting-Angeboten kommt man aus Sicherheitsgründen nicht an diese Datei ran (zB Angebote bei Strato, 1&1, Hosteurope, AllInkl, etcpp) . Frage: welche Möglichkeiten hat man dort, um die php.ini feinzutunen? Auf Root/Virtual Server Angeboten, kann man natürlich nach Belieben Hand anlegen.

Bei mir war zuvor der Wert auf 8 MB gesetzt und hat zu folgenden Problemen geführt:
– Suche in den Kommentaren und Postings brach ab
– viele Plugins wie UTW konnten adminseitig nicht mehr aufgerufen werden
– das Upgrade auf eine höhere WP Version ging nicht
– etcpp

Das hat sich nun erledigt, Stebu hat mir den Wert auf 32 MB hochgesetzt und nun funzt alles. *salbt die Füße seines Serveradmins*


Vernetze dich mit uns!

Like uns auf Facebook oder folge uns bei Twitter


Über den Autor

Robert Basic

Robert Basic ist Namensgeber und Gründer von BASIC thinking und hat die Seite 2009 abgegeben. Von 2004 bis 2009 hat er über 12.000 Artikel hier veröffentlicht.

11 Kommentare

  • Naja eigentlich aber der verkehrte Weg.
    Denn wie ja das Manual sagt, schützt es den Server bzw. die Applikation vor „schlecht programmierte“ Scripte.

    Sofern Scripte (abgesehen von Download/Upload-Scripten) einen SPeicher von über 8MB benötigt, sollten beim Admin echt die Alarmglocken klingeln!!

    Du sagst, z.b. „die Suche in Kommentaren und Postings brach ab“, das würde bedeuten – vorrausgesetzt es brach mit dem Fehler „…Allowed memory size of xxxxxx bytes exhausted…“ ab – das dieses Script Daten von mehr als 8MB in den Speicher legt.
    Wenn man nun überlegt, was das Script „eigentlich“ tun *sollte* ist es echt schwer vorstellbar, wie es dabei ganze 8MB Speicher verbraucht.

    Im Umkehrschluss – wenn das Script optimal programmiert ist und wirklich 8MB Speicher benötigt – was passiert bei vielen gleichen Aufurfen durch viele User, wenn das Limit hochgesetzt wird?
    Richtig: Die Sicherung ist herabgesetzt und das Hardwareseitige Limit wird immer eher erreicht.
    Speicher voll -*alles* läuft langsam.

    Bzgl. der Scripte (die du nennst) die mehr als 8MB benötigen, würde ich einer genauen Prüfung/Optimierung unterziehen – das kann nicht normal sein – wenn doch sollte man das Script umbauen oder in Erwägung ziehen, zu entfernen.

  • ini_set(memory_limit, 32) am Anfang der index.php aus dem admin-Ordner sollte deine Probleme auch lösen. Sofern diese Probleme nur im Admin-Bereich auftreten und im „normalen Blogbetrieb“ nicht.
    Damit wird das Speicherlimit nur temporär herauf gesetzt.

    @LJay: Es dürfte wohl weniger an schlechten Scripten als vielmehr daran liegen, dass Robert ungefähr das zehnfache eines normalen Bloggers schreibt. In sofern könnte das gleiche Problem andere Blogger in ein bis zwei Jahren auch quälen. Wenn man bedenkt das Robert derzeit ca. 3.000 Tags verwendet, ist es nicht verwunderlich das der Speicher bei 8MB schnell mal überläuft. Und bei ca. 80.000 Kommentaren die zu durchsuchen sind, erst recht nicht.

  • Das lässt sich nur in einer .htaccess einstellen, wenn PHP als Apache Module läuft.

    8MB memory_limit ist aber wirklich nicht so viel.

    Auf jeden Fall wurde in den letzten Versionen von PHP der Memory Manager etwas verändert, er zählt den MB-Verbrauch jetzt „genauer“, dadurch kam es schon zu einigen Problemen.
    Außerdem gibt es jetzt keine Möglichkeit mehr PHP mit –disable-memory-limit bzw. –enable-memory-limit zu kompilieren.
    Memory Limit ist jetzt immer aktiviert, kam glaub ich mit 5.1.2 oder 5.1.3.

  • Servus,

    nur mal aus Interesse – wie läuft der Blog bei dir und welche Ansprüche hat ein solches Blog wie deines?

    Hast du einen eigenen Server, den du vielleicht selbst verwaltest – oder wie kann man sich das als 0815-Shared-Server-Kunde vorstellen?

    Danke vorab.

  • @Ralf:
    „Und bei ca. 80.000 Kommentaren die zu durchsuchen sind, erst recht nicht.“
    Naja, nur PHP sollte bei solchen Recherchen garnicht grossartig in Anspruch genommen werden.
    Denn die Suchanfrage erfolgt (sollte jedefalls) zum größten Teil in MySQL und die DB hat ihren eigenen Speicher für sowas.
    Erst wenn man alle 80.000 Kommentare im Browser ausgeben möchte oder diese im PHP behandelt (Sortierungen in Arrays etc.) – erst dann wird der Speicher und somit das Limit von PHP verwendet.

    @Rest:
    Das Memory Limit (wie auch andere PHP.ini Settings) können – je nach PHP bzw. Webserver Konfiguration – immer im PHP-Script selbst, in einer htaccess Datei oder auch in der Apache VHost Config überschrieben/gesetzt werden.

    Es gibt sicherlich noch 1-2 andere Stellen, wo man diese Settings individualisieren kann.

  • Das muss nicht unbedingt an der Häufigkeit und Anzahl der Post liegen, sondern vielmehr an den laufenden Plugins.
    Bei bestimmten Kombinationen gerade mit dem Speicherfresser UTW kommt es da schon schnell zu Engpässen und gewisse Sachen gehen nicht mehr, wie zum Beispiel man kommt gar nicht mehr in den Adminbereich. Habe ich selber schon erlebt bei einem frisch aufgesetzten Blog.
    eine nette Mail oder Supportanfrage an den Hoster hilft oft wunder und das PHP Limit wird heraufgesetzt, wobei ich mindestens 16 MB empfehle.

  • Bei vielen Hostern kann man das Limit auch selbst hochsetzen, ohne direkt auf die php.ini zugreifen zu können. Das läuft dann über irgendwelche Konfigurations-Frontends.

Kommentieren