-
WordPress ma własne limity zużycia pamięci RAM
Wczoraj klient napisał mi wiadomość, że jego strona na WordPressie strasznie mieli i generalnie nie działa. Sprawdzam, a serwer się obija. Wchodzę na stronę, a ona …. działa i to szybko.
Patrzę, sprawdzam. Okazało się, że IDS wyciął użytkownika, bo suhosin wykrył, że WordPress, chce zaalokować więcej pamięci RAM niż ma dozwolona dana strona. Poniżej komunikat, jaki znalazłem w logach
ALERT - script tried to increase memory_limit to 1073741824 bytes which is above the allowed value (attacker '128.146.162.228', file '/www/super-stronka.org/html/wp-includes/functions.php', line 5599)
. Podobno w tym czasie użytkownik dodawał nowe treści. Wstawiłem jego IP na whitelistę, ale niestety ma zmienne. Poza tym to nie rozwiązuje problemu, a działa jak tabletka przeciwbólowa. Okazuje się, że WordPress ma własne limity, które mogą być inne niż nasze w php.ini. Aby je zmienić należy wyedytować plik „default-constants.php”vim /www/super-stronka.org/html/wp-includes/default-constants.php
Znajdujemy akapit:
if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {
if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) {
define( 'WP_MAX_MEMORY_LIMIT', $current_limit );
} elseif ( -1 === $current_limit_int || $current_limit_int > 268435456 /* = 256M */ ) {
define( 'WP_MAX_MEMORY_LIMIT', $current_limit );
} else {
define( 'WP_MAX_MEMORY_LIMIT', '1024M' );
}
}
W miejsce '1024M’ wpisujemy naszą wartość np. '1536M’. Zapisujemy i powinno być już dobrze, chyba że zapotrzebowanie jest jeszcze większe. W takim przypadku zweryfikowałbym CMS-a, w właściwie to wtyczki, czy któraś nie ma jakiś wycieków pamięci lub innych bugów.
ERRATA
Jak słusznie zauważył nasz redaktor Konrad, powyższą zmianę powinniśmy wykonać w pliku konfiguracyjnym wp-config.php.vim /www/super-stronka.org/html/wp-config.php
dodajemy
define('WP_MEMORY_LIMIT', '256M');
Zastosowanie metody Konrada uchroni nas przed nadpisaniem, przy aktualizacji WordPress-a. W imieniu naszych czytelników … Dziękujemy!