it-swarm-eu.dev

Jak zlepšíte výkon Drupal)?

Drupal se rychle vyvíjí, ale výkon je tak slabý. Je obtížné dosáhnout 50 požadavků za sekundu.

A na jednoduché webové stránce je tolik dotazů SQL. Pokud vyzkoušíte čas na zaslání formuláře na Drupal.org, dokončení bude vždy trvat několik sekund.

Jak zvýšíte rychlost svého webu?

54
Bruce Dou

Ukládání do mezipaměti, ukládání do mezipaměti a ukládání do mezipaměti.

Nějaké návrhy, které jsem předtím dal podobné otázce na d.o.

  1. Vložení Varnish nebo jiného reverzního proxy před váš http-deamon je pravděpodobně to nejlepší, co můžete udělat.
  2. Během DrupalCon Copehagen, Rasmus uvedl, že použití mezipaměti php opcode, jako je APC , je jedna z nejlepších věcí, které můžete udělat pro urychlení PHP obecně. Výkon se zlepšuje s novějšími verzemi PHP. Další výhody přináší upgrade PHP při upgradu Drupalu). Od 6 do 8 , Drupal projde hlavním posunem směrem k orientaci na objekt, což je také to, že k většině zlepšení výkonu dochází v novějších PHP verzích.
  3. Memcache je oblíbenou volbou pro zrychlení mezipaměti vložením mezipaměti do paměti místo na disk.
  4. Panely + Mezipaměť kombinovaná s Akce mezipaměti může výrazně zvýšit výkon, a to i pro přihlášené uživatele, protože podporuje poměrně složitou logiku.
  5. Entity Cache je pěkné a nulové zvýšení rychlosti pro každého, kdo používá Drupal 7).
  6. Webové stránky náročné na psaní mají méně „dobře zavedených“ řešení. Některé možnosti zahrnují.
    1. Pohybující se často píše zcela, například statistiky, někde jinde, například Google Analytics.
    2. Ukládání do mezipaměti časté operace zápisu pomocí vlastního řešení v něčem, jako je NodeJS, které zapisuje do databáze jednou za X sekundu.
    3. Obětujte posvátnou KYSELINU a použijte databázi jako MongoDB . (Viz komentář Berdira níže)
    4. Seskupte svou databázi SQL. Čte z jedné databáze, zapisuje do druhé. To je nativní pro D7 a Pressflow může pomoci s tím v D6.
61
Letharion

To jsou poznámky z mých zkušeností a mohou se lišit od toho, co ostatní zažívají. Převážně používám zásobník LAMP a ve svých návrzích jsem to zvážil.

Palcová pravidla pro ukládání do mezipaměti, která obecně dodržuji.

  1. Proces jednou použít vícekrát.
  2. Pokud je to možné, žijte se zastaralými daty
  3. Vyčistěte mezipaměti zřídka a udržujte je velmi konkrétní.
  4. Pokud je to možné, proveďte změny na nejnižší úrovni v zásobníku. LAMP - DCCc: Linux, Apache, Mysql, PHP, Drupal Core, Contrib a custom module.

Zlepšit výkon a Drupal webu (ve vzestupném pořadí složitosti)

  1. Aktualizujte jádro, aktualizujte modul a témata. Ano, na tom záleží.

  2. Nainstalujte si APC na svůj server. (Přesunuto nahoru na základě návrhu od Letharion)

  3. Mezipaměť stránky: admin/config/vývoj/výkon Rozdíl mezi minimální životností mezipaměti a expirací stránek v mezipaměti

  4. Blokování mezipaměti https://drupal.org/project/blockcache_alter Možnosti mezipaměti pro všechny bloky.
  5. Agregovat soubory javascript a css - Vylepšení rozhraní frontend https://www.drupal.org/project/advagg
  6. Zakázat nepotřebné moduly. Každý modul zvyšuje množství kódu, který musí být k dispozici pro načtení stránky. A také to zvyšuje počet vyhledávání. Tam, kde je to možné, použijte obecný modul místo více modulů, které provádějí specifické funkce.
  7. Obsah zobrazení Cache Views - Ukládání obsahu do mezipaměti pro zobrazení https://www.drupal.org/project/views_content_cache
  8. Zakázat protokolování DB - použijte https://drupal.org/project/syslog_ng
  9. Snižte 404 chyb - http://www.brokenlinkcheck.com/
  10. Rychlé odpovědi 404 - https://drupal.org/project/fast_404 - Zkuste zpracovat na úrovni serveru.
  11. Ověření na straně klienta - https://www.drupal.org/project/clientside_validation
  12. Komprimovat obrázek - https://www.drupal.org/project/imageapi_optimize
  13. Líné načítání obrázků - Nevkládejte nepotřebné obrázky - https://www.drupal.org/project/lazyloader
  14. Použít Sprite Sheets - https://www.drupal.org/project/spritesheets

  15. Nastavte minimální hodnotu doby mezipaměti na vyšší počet a pomocí modulů pro vymazání mezipaměti vyčistěte mezipaměti pro konkrétní stránky - Kdykoli upravím/aktualizuji uzel, ztratí se všechny mezipaměti stránek pro anonymního uživatele

  16. K sledování dotazů použijte modul Devel.
  17. Přepsat pohledy Dotazy/vyhnout se pohledům, pokud je to nadměrné.
  18. XHProf - https://www.drupal.org/project/XHProf
  19. FPM, HHVM.
  20. Profilování a ladění DB - https://www.drupal.org/project/dbtuner
  21. Použijte Boost , nepoužívejte Bootstrap DB, pokud není vyžadováno) https://drupal.org/project/boost Pro většinu malých a středních stránek je Boost dost dobrý a možná nebudete potřebovat reverzní proxy.
  22. Použijte CDN - https://www.drupal.org/project/cdn Je snadné nastavení.
  23. Pokud jsou tabulky mezipaměti obrovské, použijte Memcached - Pokud si můžete nainstalovat memcached a nastavit RAM pro něj, není to tak složité, jak to zní).
  24. Etags - Správně nakonfigurujte Etags. https://developer.yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. Použijte server reverzní proxy - lak (přinejmenším pro aktiva). Pomáhá hodně, pokud je většina vašich uživatelů anonymní.
  26. Komprimovaný přenos - Povolí kompresi gzip
  27. Keep Alive - pokud je to možné, používejte trvalé připojení.
  28. Progresivní JPEGS -
  29. UKLÁDÁNÍ KÓDU - Blog společnosti Eaton je úžasný. http://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7
  30. Implementujte zahřívání mezipaměti - https://www.drupal.org/project/cache_warmer - Vyrovnávací paměť Zahřejte stránky dříve, než je koncový uživatel zasáhne.
  31. Master Slave DB Config - https://www.drupal.org/project/autoslave vám usnadní nastavení jednoho.
  32. Klastry databáze - https://stackoverflow.com/questions/1163216/database-cluster-and-load-balancing
  33. Load Balancers - http://en.wikipedia.org/wiki/Load_balancing_ (computing)
  34. Použijte heuristické zahřívání mezipaměti - https://www.drupal.org/project/cache_graceful
  35. Ověřování mezipaměti ověřeného uživatele - https://www.drupal.org/project/authcache
23
Gokul N K

Boost modul je také docela užitečný, vytváří statické cache souborů z vašich webových stránek. Je to hlavně pro weby se spoustou anonymního provozu uživatelů.

Boost poskytuje statické ukládání do mezipaměti pro Drupal), což umožňuje velmi významné zvýšení výkonu a škálovatelnosti pro weby, které přijímají většinou anonymní provoz. Pro sdílený hosting je to vaše nejlepší volba, pokud jde o zlepšení výkonu. můžete raději zvážit Varnish.

Apache je plně podporován, přičemž Nginx, Lighttpd a IIS 7 jsou částečně podporovány. Boost ukládá mezipaměť a gzip komprimuje html, xml, ajax, css a javascript. Zvyšuje logiku vypršení mezipaměti je velmi pokročilá; je poměrně snadné mít různé doby mezipaměti pro různé části vašeho webu. Vestavěný prolézací modul zajišťuje, že vypršení platnosti obsahu je rychle regenerováno pro rychlé načítání stránky.

18
Beebee

Za zmínku stojí, že pokud používáte ovladač databáze SQLIte, možná budete muset vypnout synchronizaci disku.

/**
 * Implements hook_init().
 */
function HOOK_init() {
  db_query('PRAGMA synchronous = OFF');
}

U některých konfigurací serveru to dramaticky zlepší výkon.

5
ya.teck

Tajemství výkonu Drupal) je v ukládání do mezipaměti a dodržování správných postupů.

Drupal back-end

  • Povolit ukládání do mezipaměti v sekci Výkon.
  • Zkontrolujte Výkon a Kontrolní seznam výkonu a škálovatelnosti .
  • Zkontrolujte Možnosti optimalizace výkonu Drupal 7 a kontrolní seznam .
  • Zakažte nepoužívané a nevýrobní moduly (jako je Devel, UI pohledu, UI pravidel atd.).
  • Zakázat nestabilní moduly.
  • Zakázat statistika .
  • Zakažte základní modul dblog a nahraďte jej syslog .
  • Zakázat jádro Správce aktualizací modul.
  • Cron: Použijte vestavěný cron Drupalu, ne poormanscron (zvažte Elysia nebo ltimate cron).
  • Pohledy: Použijte mezipaměť pro zobrazení v různých vrstvách (databázový dotaz, značkování, časově).
  • Bloky: Používejte ukládání bloků do mezipaměti, pokud je váš pohled na blok (na stránku, uživatele atd.).
  • Bloky: Zvažte vyladění nastavení mezipaměti na blok modulem Block Cache Alter .
  • Panely: Používejte co nejvíce mezipaměti (pro kontrolu D7 PCC & PHC moduly ).
  • Entity: Enable Entity cache .
  • Při použití více prostředí zvažte chybějící modul , což může zlepšit načítání stránky.
  • Povolte ukládání stránek do mezipaměti ověřených uživatelů pomocí modulu Authcache .
  • Vyvarujte se přesměrování, která zpomalují uživatelské prostředí.
  • Vylepšete zneplatnění mezipaměti pomocí modulu Expire .
  • Použijte PHP profilování před výrobou (např. XDebug )).

Drupal front-end

  • Minimalizujte HTTP požadavky o:
  • Zvažte vytvoření některých skriptů JavaScript a CSS External (v některých případech je to rychlejší).
  • Minifikujte JavaScript a CSS (viz: Speedy modul). Vyhněte se vloženým.
  • Při odkazování na JS použijte atributy defer nebo async.
  • Minimalizujte počet prvků iframe.
  • Optimalizujte obrázky, písma, CSS Sprite, zmenšete velikost mezipaměti a zmenšete velikost souboru cookie.
  • Snižte počet prvků DOM a odkazů do mezipaměti přístupových prvků.
  • Zrychlete načítání 404 stránek pomocí modulu Rychlý 404.
  • Povolte agregaci front-end zdrojů a ukládání do mezipaměti pomocí Advanced CSS/JS Aggregation .
  • Umístěte šablony stylů nahoru a skripty dole.
  • Přidejte odpověď Platnost vyprší nebo a Cache-Control, také ETags, abyste snížili odpovědi.
  • Použijte GET pro AJAX) a zajistěte, aby byly v mezipaměti.
  • Předběžné a následné načtení součástí využijete čas, kdy je prohlížeč nečinný.
  • Rozdělení součástí napříč doménami může někdy maximalizovat paralelní stahování.
  • Neupravujte obrázky v HTML a neponechávejte komponenty pod 25k.
  • Vyvarujte se filtrů, CSS výrazů, HTML prvků s prázdným SRC nebo hrefem.
  • K ladění webových požadavků použijte reverzní proxy (např. Charles ).
  • Pro základní kontroly výkonu použijte nástroje jako Y-Slow a PhantomJS .
  • K analýze a optimalizaci vašeho webu použijte nástroje Google PageSpeed .
  • Přečtěte si o W3C Navigation Timing specifikace ( GitHub ).

PHP

  • Povolit PHP ukládání do mezipaměti (např. OpCache, [~ # ~] apc [~ # ~]) a nastavení Tweak.
  • Zvažte použití PHP-FPM místo mod_php plus Nginx místo Apache.

Databáze

Server

  • Zkontrolujte doporučené systémové požadavky pro Drupal.
  • Zkontrolujte doporučená nastavení webového server pro Drupal.
  • Zkontrolujte doporučeno PHP nastavení konfigurace pro Drupal.
  • Zkontrolujte, zda je hostování na zařízeních s rychlým úložištěm (např. SSD).
  • Na rozdíl od sdíleného hostingu používejte vyhrazený rychlý spolehlivý server.
  • Nainstalujte Redis nebo memcached (s podporou igbinary) a nakonfigurujte Drupal), aby se použil.
  • Definujte delší TTL pro vyhledávače (např. TTL z 24 hodin se vyhnete robotům, kteří se dostanou na server).
  • Omezte vyhledávání DNS (ujistěte se, že jsou v mezipaměti).

Webové stránky s vysokým provozem

Pokud na svém webu očekáváte vysokou zátěž, použijte Varnish. Zvažte také použití CDN.

Více se dozvíte na: Skutečné zkušenosti s měřením a laděním výkon


Další zdroje:

4
kenorb

Existuje kniha s názvem High Performance Drupal , která poskytuje doporučené postupy, příklady a podrobná vysvětlení pro řešení několika problémů s výkonem a škálovatelností. Naučíte se, jak aplikovat techniky kódování a infrastruktury na interní zdroje Drupal, výkon aplikací, databáze, webové servery a analýzu výkonu.

V článku Výkon a škálovatelnost v článku Drupal 7 najdete několik příkladů o Drupal 6 a Drupal 7 a následujícím seznamu:

Projekty Drupal 7 pro výkon a škálovatelnost:

3

Jako vývojář backendu existuje vždy prostor pro vylepšení kódu a zvýšení výkonu webu. Některé pokyny pro vývojáře backendu mohou být:

1) Vyčistěte stůl hlídacího psa

2) Nezneužívejte proměnné API

3) Vyžádejte si méně nebo lepší požadavky HTTP

4) Udržujte svůj „dot modul“ krátký

Pokud jde o písmo a tvůrce webů, lze toho dosáhnout mnohem více, ale je důležité brát v úvahu výkon ze všech hledisek.

Zdroj: Optimalizace před spuštěním

2
targoo

Existuje několik možností, jak zvýšit Drupal za rozumnou úroveň bez instalace nových modulů. Ano, Drupal má konfiguraci výkonu).

  1. Můžete to nastavit tak, že přejdete na: YourSiteDomain/admin/config/development/performance
  2. V části Chaching povolte stránky mezipaměti pro anonymní uživatele
  3. Minimální životnost mezipaměti: 1 den (Pokud neprovádíte pravidelné aktualizace)
  4. Vypršení platnosti stránek v mezipaměti: 1 den (Pokud nechcete pravidelně aktualizovat)
  5. Povolit „Komprimovat stránky v mezipaměti“
  6. Aktivovat „Agregovat a komprimovat soubory CSS“
  7. Povolit 'agregovat soubory JavaScriptu'

  8. Po nastavení této konfigurace přejděte na: YourSiteDomain/admin/reports/status

  9. Zkontrolujte, zda v adresářích „css“ a „js“ nejsou nějaké problémy s povolením
  10. Opravte oprávnění podle definice na stránce Zpráva o stavu

A nyní jste hotovi s optimalizací rychlosti pro váš web drupal 7).

Existuje několik online nástrojů pro testování rychlosti pro kontrolu rychlosti. Před aktualizací výše uvedených nastavení použijte jeden z nástrojů pro kontrolu rychlosti a proveďte test. A jednou po aktualizaci nastavení výkonu spusťte znovu test rychlosti. Určitě uvidíte zlepšení.

Pingdom a HTTP Fox (plugin FireFox) jsou nejlepšími nástroji pro kontrolu rychlosti webu.

Výše uvedené nastavení nejen ukládá vaše stránky do mezipaměti pro anonymní uživatele, ale také komprimuje soubory CSS a JS. Příklad, pokud váš web načítá 80 souborů, zveřejněte tato nastavení, počet žádostí se sníží alespoň o 50%, takže zde máte dvakrát vyšší rychlostní rychlost na vašem webu Drupal=).

2
AnAnD

Pro optimalizaci výkonu vašeho webu Drupal) došlo k mnoha vylepšením, ale ne všechny jsou nezbytné. Mezipaměť, ano, jedná se o způsob, jak optimalizovat web různými způsoby, ale některé další doplňky a tipy mohou váš web zvýšit a vyladit bez jakýchkoli potíží.

Nedávno jsme zveřejnili podobný článek jako naše webové stránky, o kterém si myslím, že by vám mohl pomoci při provádění Tweak práce.

Zdroj: http://www.cloudreviews.com/blog/drupal-performance-optimization-tips

2
Sabih

Neoptimalizovaný Drupal 7 web s 2 GB RAM) může uspokojivě uspokojit přibližně 20–25 požadavků za sekundu. Pokud to chcete překročit, bude web Vyžadujete nějaké vylepšení. Co vylepšíte, závisí na tom, zda je většina uživatelů na webu anonymní nebo ověřená. Zde jsou nejlepší věci, které můžete udělat pro zlepšení výkonu:

Web slouží převážně anonymním uživatelům:

1) Rozhodně nainstalujte a nakonfigurujte APC, memcache a entitycache.

2) Před webový server umístěte server proxy společnosti Varnish. Instalace a konfigurace trvá asi 30 minut, ale výrazně zkrátí dobu načítání stránky. Ve skutečnosti dokáže společnost Varnish zpracovat přibližně 300 požadavků za sekundu na 2 GB stroji, pokud jsou všechny stránky uloženy do mezipaměti. Pomocí modulu Expire vyprší platnost pouze vybraných stránek při aktualizaci/odstranění obsahu.

3) K agregaci souborů CSS a JS použijte modul Advanced CSS/JS Aggregation. Zkuste přesunout všechny soubory JS do spodní části stránky. Nezapomeňte však, že to může váš web rozbít, takže ho po důkladném testování implementujte do výroby. Experimentujte také s vložením kritického CSS. Podle mých zkušeností to zkrátí dobu načítání stránky asi o půl sekundy.

4) CSS/JS/obrázky by měly mít do budoucna záhlaví vypršení platnosti. Tím zajistíte, že prohlížeče nebudou znovu a znovu požadovat stejné CSS/JS/obrázky.

5) Ujistěte se, že webový server obsluhuje komprimované stránky/CSS/JS.

Po provedení výše uvedených 5 kroků by váš 2 GB RAM server) měl být schopen snadno a rychle zpracovat 50 požadavků za sekundu.

Web slouží převážně ověřeným uživatelům:

Optimalizace takového webu je složitější. Takové weby patří pro optimalizaci do jedné ze dvou podkategorií:

(a) Většina stránek na webu je identická s výjimkou 1 nebo 2 bloků, které obsahují informace specifické pro uživatele. Například Drupal Obchodní web.

(b) Většina stránek je pro uživatele zcela přizpůsobena. Například Drupal Commons web.

Pokud váš web spadá do kategorie (a), použijte většinu technik, o nichž jsme diskutovali, pro web sloužící převážně anonymním uživatelům. Jediný rozdíl spočívá v tom, že u stránek, které nejsou administrátorem, bude muset společnost Varnish odstranit záhlaví cookie SESSION a poskytnout stránky v mezipaměti. Použijte AJAX Blokovací modul pro blokování serverů s uživatelsky specifickými informacemi pomocí AJAX. Tímto způsobem bude většina stránky zobrazována velmi rychle pomocí Varnish a pak informace specifické pro uživatele budou zobrazovány přes AJAX.

Pokud váš web spadá do kategorie (b), použijte modul Authcache. Raději ho nepoužívám co nejvíce, protože to vyžaduje trochu konfigurace a údržby. Ale funguje to opravdu dobře. Nebude to tak rychlé jako používání Varnish, ale bude schopno zvládnout 50 požadavků za sekundu, které hledáte.

Pokud se chystáte jít nad rámec toho, co jsme zde diskutovali, podívejte se na Kontrolní seznam pro optimalizaci výkonu Drupal . Zveřejnění: Je napsáno mnou. Uvádí vyčerpávající seznam věcí, které můžete udělat, aby se váš web Drupal) rychle rozžhavil.

2
Neerav Mehta