it-swarm-eu.dev

Jaký je ideální způsob, jak profilovat využití paměti WordPress?

Jsme běží vícestupňovou instanci WordPress na dvou serverech Rackspace Cloud, jednom webu a jedné databázi, která má v současné době 30 nebo více stránek. Vložil jsem Nginx před statická aktiva a Apache zpracovává všechny dynamické požadavky. Také jsem nakonfiguroval Memcached pro databázi a APC op kódování do mezipaměti pro PHP. W3 Celková mezipaměť je standardně zapnuta ve všech lokalitách, které máme.

S jedním problémem je to rychlé: Apache procesy pravidelně váží mezi 80 a 120 MB. Webový server má 2 GB paměti, což znamená, že dostávám 15 procesů, až se věci rozběhnou. Procesy by samozřejmě neměly být tak velké, ale jsem zmatený, proč jsou.

Jaká je dobrá strategie pro identifikaci toho, co se děje?

Díky předem!

Aktualizace 10/2/10:Pro ty, kteří se zajímají, bylo vyřešení problému s problémem s pamětí zakázáno PHP xdebug (byl neúmyslně povolen v konfiguraci a způsobil náhodné využití špičky paměti) .

8

Množství procesní paměti Apache, o které hovoříte (80 až 120 MB na proces), lze rozdělit do dvou důvodů.

  1. Apache
  2. Wordpress

Apache

Apache můžete optimalizovat pouze načtením potřebných modulů a dalších optimalizačních vylepšení, které sníží paměť. Pokud jste to ještě neoptimalizovali, dejte mu nějaké vylepšení.

Wordpress

Wordpress spotřebovává spoustu paměti a není příliš optimalizovaný. Začal bych nahrazovat databázovou třídu něčím více správně implementovaným. To by mělo získat větší rychlost a hodně snížit využití paměti. Vedle toho nemám tolik co navrhnout. Nepoužívání Worpdress není považováno za užitečné, myslím.

Strategie

Chcete-li zjistit, co se děje, musíte sledovat, kolik paměti má požadavek na wordpress. K dispozici je funkce pro maximální využití ( memory_get_peak_usage() ), kterou můžete použít k monitorování využití paměti worpdress. Pokud se přiblíží 80 - 120 MB, o kterých jste psali, víte, že wordpress vytváří vaše bolesti hlavy. Možná budete chtít zaznamenat časové razítko, maximální paměť, dobu provádění a požadované URI.

Použití Nginx slouží k ukládání do mezipaměti wordpress stránky bude určitě vám pomůže, protože to zabrání wordpress od načtení - i pro ty "příchozí" cache, jako je ten, který používáte. Jsou koncepčně rozbité, protože jsou pluginem wordpress, takže alespoň část wordpressu musí být načtena i pro výsledky v mezipaměti.

4
hakre

Daniel,

S úctou nesouhlasím s kenkeiterem, chápu použití nginx jako reverzní proxy před Apache. Harvardův zákon měl s touto metodou velký úspěch a mají skvělý článek o tom, jak to dělají, s odkazem na jejich plugin WordPress, který pomáhá rozhraní s nginx:

http://blogs.law.harvard.edu/djcp/2010/01/nginx-as-a-front-end-proxy-cache-for-wordpress/

Na Harvardově zákoně zjistili, že s nginxem v podstatě ukládají všechny požadavky do front-endu, ve skutečnosti nezvyšují výkonnost použití jiných zásuvných modulů typu mezipaměti v backendu a nestojí za další složitost. Pokud jste vážně používali nginx tímto způsobem, doporučuji vám podívat se na tento článek o jejich zkušenostech a pokusit se zrychlit dynamické procesy, včetně mezipaměti na straně WP.

Některé základní funkce, jako je pozorné prohlížení vašeho přístupu k Apache a chybovým protokolům, umožňují zjistit, jaké druhy dotazů se musí ve skutečnosti provádět dynamicky a snažit se tyto případy omezit.

1
mitcho

Nejprve používáte Apache a Nginx - druh nadbytečného. Měli byste používat Nginx/FastCGI w/PHP. Výukový program na těchto stránkách by měl pomoci. Jinak je nejlepší odhadnout, že některé nedávné změny kódu způsobují, že některé chyby v souboru PHP nejsou správně uvolněny. Není důvod, aby proces Apache spotřebovával tolik paměti.

http://interfacelab.com/nginx-php-fpm-apc-awesome/

Hodně štěstí!

@kenkeiter

0
kenkeiter