Wordpress + php memory limit wtf?

Hello,
Adott egy server rajta WordPress sok látogatóval. Nos a rendszer meglehetősen undorítómód zabálja a memóriát.
php.ini memory_limit-je 512M-ra van állítva.
wp_memory_limit ugyanennyire.
whm+cpanel van a gépen :O , abban a /var/cpanel/cpanel.config file-ban:
maxmem=512

Mégis:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 71 bytes) in /wp-includes/wp-db.php on line 1530

Előre is köszönet a tippekért!

Hozzászólások

töltsd le a legfrissebb wp-t
mentsd le a régi-t
másold fel az új wp-t, a wp-content kivételével
elvileg működnie kell

1. "amúgy legfrissebb verzió."
2. nem tudom mi az elméleted mögötte.. "pár file felülírása varázslatot okoz"?
3. A gond az, hogy bár 512M-ra van beállítva a memória limit 256 után lehal.
Centos 5.6 a rendszer...
..
RAM van 8G a gépben, de sehogy sem tud 1.6-2.4-nél többet "fogyasztani" a rendszer..

na mégegyszer
apache-ban beállítás kérdése h felülírható-e...
nálam pld nem
de nem is ez a lényeg.
a kérdés az, hogy miért hal meg a script már 250M után ha egyszer a limit 512M...

tiltsd le az adminon az összes bővítményt, nézd meg akkor, majd egyesével engedélyezd őket...

cuki vagy, hogy a wp-hu fórumát ajánlgatod, ott van pár ezer hsz-em már és elég jól ismerem a szokásos válaszokat. Ezen felül szerintem értelmes embertől elvárható, hogy először keressen majd kérdezzen. releváns találatként pedig már átmásztam volna rajta, ha nem ismerném a fórumot már elég rég óta..

a kérdés itt inkább a whm+cpanel ill. egyéb processek memória használatot limitáló beállításaira vonatkozik.

a WordPress beállítási lehetőségei kimerültek!
Legfrissebb stable verzió és svn-en naponta frissülő is ezt produkálja..
Tehát:
(php.ini-ben,a fent említett cpanel.config-ban,wp-config-ban BE VAN MÁR ÁLLÍTVA!)

Egyéb ötlet valaki?
Azért köszönet a próbálkozásokért..

phpinfo() sztem pontosan megmondja neked, hogy a PHP környezet mit gondol a számára engedélyezett memóriamennyiségről.
Ha ott 256 van, akkor valahol ezek a beállítások amiket említesz valsz felülíródnak.
wp-nél a modulok kikapcsolása mindenképpen jó ötletnek tűnik.

ahogy masok is javasoltak, nezz egy phpinfo()-t:
- mi van a "Loaded Configuration File"
- mi a "Additional .ini files parsed" erteke

az alabbi helyeken lehet beallitva memory limit:
- az beolvasott ini fajlokban.
- az apache configban (mod_php eseteben) php_value segitsegevel
- a kodot tartalmazo konyvtarban(.htaccess fajlokon keresztul, vagy ini_set('memory_limit', '256M') formaban)
ez alapjan keresd meg, hogy honnan jon a 256M es allitsd at tetszes szerint.

Tyrael

na igen.
php_memory limit 512M. Ettől függetlenül vmi levágja 256-nál
php-infót néztem persze még akkor. su-val bejelentkezve cli-ből meg phpinfo()-val is.
Minden esetben 512M.
apache + nginx szolgálja ki az oldalt, hogy statikus tartalmakért ne pörögjön az apache.
suhosin patch nincs és apache httpd.conf rlimit-ek is ki vannak iktatva..

Én annyit csinálnék még, hogy valamelyik WP php fájl végére (ami biztos lefut, vagy amelyik elfekszik - ennek akkor ne a végére, hanem mielőtt meghal) szintén betennék egy phpinfo()-t, amit kiírnék egy fájlba.
Ezzel megállapíthatod talán, hogy a WP esetleg módosít-e valamit ezen a beállításon, ha egyáltalán ez lehetséges PHP scriptből.

Természetesen:
Configuration File (php.ini) Path /usr/lib
Loaded Configuration File /usr/local/lib/php.ini
Scan this dir for additional .ini files (none)
Additional .ini files parsed (none)

/usr/lib/php.ini egy symlink a betöltött /usr/local/lib/php.ini-re.

valamint reseller alól:
php -i | grep memory_limit
memory_limit => 512M => 512M

talátam egy ilyet:
ulimit -a | grep memory
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) 200000
virtual memory (kbytes, -v) 200000

keresgélek-olvasgatok még ez ügyben.. tippek?
Hol lehet ezt átállítani? (u)limits.conf nem játszik..

Ez wordpress specifikus? más phpapp nem dobja?
Mert ez esetben a wp kezéből folyik ki a memória, ez a 256MB meg 512MB, amin túl akar foglalni, rohadtsok.

mivel más php app nincs ekkora terhelés alatt és nem akarok(user) bele a legsűrűbb időszakban 70e user-t importálni... meg ennek többszörösét exportálgatni..
..
...
:D
A WP amúgy rohadtul memoryleak-es (legalábbis a bővítmények nagyrésze..)
És mivel a gépnek leginkább 2 terebéjes wp install-t kell kiszolgálnia (fő cél) így..
...
512M a php memory limit...
de levágja 256-nál.. más app-al nem próbáltam még ennyi memóriát felzabáltatni :)
De mindjárt foglaltatok egyszeri 300M-et meglássuk engedi-e.
A gépben levő 8G ram-ból amúgy max 2.5 3 fogy el, mert mindig levágja valami...
Így aztán már tudom, hogy ha 4-5G foglalva van akkor pörög az apache és nem úszom meg a webserver újraindítása nélkül..
(nginx van elé rakva statikus tartalmakhoz)

Lehet, hogy én tudom rosszul, de ha a php apache modulként fut, akkor a megadott memória-limit az egyes folyamatokra vonatkozik... vagyis ha megadtál 512Mbyte memória limitet, akkor 4 felhasználó akár 2G-t memóriát is lefoglalhat... igy nem csoda, ha elfogy a mem (egyébként mi a fenének kell ennyi memória egy oldal legenerálásához?)
Megoldás lehet esetleg az apache kapcsolatok számának babrálása is (KeepAlive On/Off, MaxKeepAliveRequests, KeepAliveTimeout) ezek szabják meg, hogy mennyi ideig foglalja egy szál a memóriát

a hibauzenetbol vilagos szerintem hogy nem a memoria fogy el, hanem a memory_limit-et eri el a script futasa.
ha fizikailag nem tudna a zend engine allokalni memoriat, akkor 'Out of Memory' errort kapnal.
http://lxr.php.net/opengrok/xref/PHP_5_2/Zend/zend_alloc.c
innentol kezdve az apache config max annyibol lehet relevans, hogy hatha onnan van a memory_limit atallitva.

Tyrael

csinalj egy php fájlt,töltsd be a wp-blog-header.php -t, így az egész wordpress betöltődik (minden wp funkció elérhetővé válik, stb.), majd tolj egy phpinfot, így látod, hogy a wordpress milyen beállításokkal dolgozik.

Rendkívül értékelem a segítő szándékot, ezért csak ennyit idéznék be:
st3v3 | 2011. augusztus 31., szerda - 14:20
[..]
php-infót néztem persze még akkor. su-val bejelentkezve cli-ből meg phpinfo()-val is.
[..]
És igen mivel még ez is felmerült még később be is idéztem, hogy igen nincsenek userek által felülbírált php.ini beállítások:
Configuration File (php.ini) Path /usr/lib
Loaded Configuration File /usr/local/lib/php.ini
Scan this dir for additional .ini files (none)
Additional .ini files parsed (none)
amúgy suexec+suphp van használatban..
összesen volt 5db hup mivel nem írt senki semmit..
@calamari: amint lesz valami értelmes és "pontosan specifikált" ötleted, ígérem visszajelzek róla..

szerintem nem fog tudni senki jobb megoldasi javaslatot adni, mint hogy deritsd ki, hogy miert 256M a memory_limit, ha te 512M-t allitottal.
nagyon meglepodnek, hogy ha az ini/ini_set-en kivul valahogy mashogy tudna valami felulbiralni a php.ini erteket.

Tyrael

Centos 5.6 cpanel gányolással, PHP Version 5.3.6...
visszanéztem és az apache-nak csúfolt valami problémázik a dinamikusan betöltött php modulokkal..
egyre érdekesebb: kikommenteztem őket, erre resellerként ezt dobja vissza:

user@gep: php info.php
Could not startup.

ami röhely mert böngészőben vígan futkorászik minden.. amitől félek, hogy valami beépített erőforrásvédelem lehet ami mindig leb'..-a

ezt nem kerdezte senki.
azt irta andrej_, hogy mivel bizonyos disztrokon (debian, ubuntu, etc.) kulonbozo helyrol keresi a php a php.ini-t apache modulkent, illetve cli-bol, ezert nem biztos, hogy elegendo a cli-s php beallitasait leellenorizni.
btw: en itt feladom, mert ez mar olyan, mint kulcslyukon keresztul szulest bonyolitani, az en velemenyem az, hogy vagy apache configbol (vhost, php.ini), vagy fastcgi configbol (sajat php.ini, htscanner, .user.ini), vagy kodbol (set_ini() hivas), at van allitva a memory_limit 256MB-ra.
amit el tudok meg kepzelni, hogy chroot/jail-bol fut az apache/fastcgi, es elfelejted, hogy nem a host os-en kell szerkesztened a php.ini-t, hanem a guest-en.

keresd meg, hogy hol/mi allitja at, es kommentezd ki/emeld meg ott is a szukseges szintre.

Tyrael

hibauzenet alapjan nem valoszinu.
http://hup.hu/node/106379#comment-1342356
ha grsec korlatozas lenne, akkor a ZEND_MM_STORAGE_ALLOC/ZEND_MM_STORAGE_REALLOC hivasok tervenek vissza sikertelenul, amire az "Out of memory" hibauzenetet kapna.
a suhosin memory limitje pedig maskepp mukodik, korlatozza hogy a safe mod nelkul futo script az suhosin.memory_limit-ben beallitott ertek fole allitsa a memory_limit-et(memoria limit marad a korabbi erteken, ini_set false-szal ter vissza, es bekerul a logba egy "ALERT - script tried to increase memory_limit to 268435456 bytes which is above the allowed value" kinezetu sor, de a script futasa nem szakad meg).
szoval ez nem lehet oka az itt leirt problemanak.

a hibauzenet alapjan nem hiszem, hogy mashol kellene keresgelni.

Tyrael