admin-ajax.php és wp-cron processzor-használatának csökkentése

WordPress CMS-t használók gyakori tapasztalata, hogy kisebb látogatószám esetén is irreális a rendszerre épített weboldaluk erőforrás-használata. WordPress gyorsítása témakörben nem elhanyagolható azon beállítások elvégzése, melyek a rendszerhez tartozó funkció-manipulációkat tartalmazzák. Az optimalizálás két hasznos lépése, ha a wp-cron.php futása, illetve az admin-ajax.php php kezelése is beállításra kerül.

 

 

WordPress optimalizálásakor az alábbiakat ajánlott elvégezni:

1. wp-cron.php

 

Mit csinál?

 

Automatikusan ellenőrzi, hogy vannak-e elérhető frissítések a használt rendszerhez, bővítményhez vagy sablonhoz. Ha engedélyezve vannak az automatikus frissítések, akkor azokat el is végzi. Az időzített bejegyzéseket a megadott időben publikálja. Email értesítőket küld ki. Elvégzi az automatikus backup-olást, ha ilyen bővítmény is telepítve van.

 

Hogyan működik?

A WordPress weboldal megnyitása esetén alapértelmezetten MINDIG lefut a wp-cron.php fájl is, ezzel ellenőrizve a fenti teendőit. Ha van teendő, akkor azt elvégzi, az ellenőrizendő feladatlistát MINDEN meghíváskor lefuttatja a fájl, így az mindig terheli a tárhelyet, azok erőforrásait fogyasztja optimalizálatlan működés esetén.

 

Nem mindenkinek kötelező, de...

 

Kis látogatottságú weboldal esetén nem égetően szükséges a wp-cron.php manipulálása. Azonban, amikor közepes vagy nagyobb látogatottságú a weboldal, mindenképp ajánlott ennek kezelése. A nagyobb látogatószámmal növekszik a megnyitások száma, többször scann-elik az oldalt jó- és rosszindulatú bot-ok is. Ezek a megnyitások mind 1-1 wp-cron.php lefuttatásnak is megfelelnek, mely könnyen felemésztheti a weboldal tárhelyén kvótázott (főként processzor) erőforrásokat.

 

Honnan ismerhetem fel, hogy ez okozza a problémát?

  • cPanel felületen a Mutatók/Process Killer menüpont alatt a futó folyamatok leginkább csak index.php-t futtató folyamatok, míg a valós idejű erőforrás-statisztikában a Processzorhasználat van megemelkedve.
  • cPanel felületen a Mutatók/ProcessKiller alatt a futó folyamatokban többször is szerepel a wp-cron.php fájl futása.
  • Néhány látogató esetén is magas a Processzorhasználat értéke

 

A wp-cron.php problémájának megoldása

  1. ki kell kapcsolni a fájl automatikus futását
  2. ezt követően viszont időzíteni kell cron-feladatként (Cron feladatok beállítása IDE KATTINTVA megtekinthető) a fájl futását cPanel felületen

 

wp-cron.php probléma megoldása 1/2 lépés

A wp-cron.php futásást a Wordpress weboldalhoz tartozó wp-config.php fájlban lehet letiltani. A letiltáshoz az alábbi kódot kell elhelyezni a fájlban:

define('DISABLE_WP_CRON', true);

Nagyon fontos, hogy a fenti kódot az alábbi sor FÖLÉ kell elhelyezni:

/* That's all, stop editing! Happy publishing. */

VAGY az alábbi sor után:

define( 'DB_COLLATE', '' );

 

wp-cron.php probléma megoldása 2/2 lépés

A tiltás beállítása után a cPanel felületen szükséges beállítani, hogy milyen gyakran fusson le a wp-cron.php fájl. A cron-feladatok kezeléséhez az alábbiak szerint lehet eljutni:

  • cPanel-be belépés
  • Speciális/Cron-feladatok menüpont

A cron feladatot tetszőleges időszakra, de maximum pár óránkénti lefutásra állítsuk be! Az alábbi parancs egy helyesen időzíthető metódust mutat be:

wget -q -O - https://DOMAIN.TLD/wp-cron.php?doing_wp_cron >/dev/null 2>&1

 

FONTOS: a fenti példakódban a DOMAIN.TLD -t értelemszerűen módosítani kell arra a domain névre, amihez a beállítás szeretné megtenni!

 

Míg az alábbi kép egy Naponta, 12-óránként lefutó wp-cron.php meghívást mutat be:

A helyes beállítás után a wp-cron.php fájl NEM fog lefutni minden oldallekérés esetében, csakis a cron-feladatokban beállított időközönként.

 

2. admin-ajax.php

 

Mit csinál?

  • Automatikus mentéseket menedzseli (pl: cikkek módosításai közben)
  • a belépések lejárati-idejét (automatikus kiléptetés) figyeli és kezeli
  • session-fájlokat kezel
  • értesít egy másik felhasználóval közösen szerkesztett bejegyzés esetén
  • valós idejű adatokat mutat az admin-felületen keresztül
  • kommunikál a böngészőablakban a felhasználóval (mentés történik, kilép-e a felületről, stb)

 

Hogyan működik?

 

A böngésző és a szerver között hoz létre AJAX kapcsolatot 15 másodpercenként, melynek segítségével a fenti feladatokat tudja ellátni. Feladata még a közeljövőben a kéretlen szerkesztésektől való védelem is.

A Wordpress Hearthbeat API-jának működése részletesen ismertetésre kerül a fejlesztői oldalon is.

Röviden az API működése és a problémafaktora: egy bejelentkezéssel, pár perces admin-felületen való munkavégzéssel akár 25 lekérdezés is elindul, melyek több szerkesztő jelenléte esetén hatványozódik, így lassítva a weboldalt. Ha egy bejegyzés vagy oldal épp szerkesztésben van, akkor a Wordpress Hearthbeat API is működésben van, ami elkezdi „bombázni” kérésekkel a szervert, 15 másodpercenként. Ez a sokszoros adatfolyam okoz a tárhelyen magas processzorhasználatot. Ez egyértelműen a WordPress optimalizálás lépéseinek egyik hiányát jelenti.

Honnan ismerhetem fel, hogy ez okozza a problémát?

A legegyszerűbben úgy lehet tetten érni ezt a hibaforrást, ha egy népszerű metrikai oldalon (pingdom, gtmetrix, stb) ellenőrzést indítunk saját weboldalunkra. Az ellenőrzés végén lehet látni egy úgynevezett „Waterfall” táblázatot (gtmetrix.com eset látható a képen, de minden metrikai oldal mutat ilyen ábrát), melynek áttekintésekor konkrétan látszódik az admin-ajax.php lekérés is. Az alábbi képeken látható, hogyan jelenik meg az admin-ajax.php a különböző oldalak táblázatában.

  • gtmetrix.com

 

  • pingdom.com

 

  • webpagetest.org

 

De észrevehető a problémát okozó admin-ajax.php futás a böngésző konzolablakának „Hálózat” lapfülén is.

 

  • Google Chrome konzolfelület

 

  • Mozilla Firefox konzolfelület

 

Értem, de mit tehetek?

 

A Wordpress Hearthbeat API-t kell deaktiválni, vagy az ellenőrzési időket kell hosszabbra definiálni. Az utóbbi szokott lenni a helyes metódus, hogy ne történjen funkcióvesztés.

 

Az admin-ajax.php problémájának megoldása

 

Az optimalizált működés, a processzor terhelésének csökkentése úgy érhető el, ha bővítmény segítségével megmondjuk ennek a Wordpress Hearthbeat API-nak, hogy „mit” és „milyen gyakran” ellenőrizzen.

 

admin-ajax.php probléma megoldása 1/2 lépés

 

Ehhez a HEARTHBEAT CONTROL bővítmény lehet a segítségünkre.

A bővítmény ITT érhető el: https://wordpress.org/plugins/heartbeat-control/#description 

A Hearthbeat Control nevű bővítmény telepítése és aktiválása után az admin felületen navigáljunk a Beállítások/Hearthbeat Control Settings menüpontba.

 

admin-ajax.php probléma megoldása 2/2 lépés - beállítások

 

A Hearthbeat Control bővítmény az alábbi képen látható lehetőségeket biztosítja a beállításhoz.

Az elvégezhető beállítások:

  • Allow: engedélyezés
  • Disable: tiltás
  • Modify: módosítás (ennek kiválasztása esetén egy 300 másodpercig skálázható csúszkát kapunk)

Emlékeztetőül: A Wordpress rendszere 15 másodpercenként küld kéréseket, így ennek megfelelően tilthatjuk vagy növelhetjük meg egy-egy folyamat kérdezési gyakoriságát.

Egy nagyon általános beállítás lehet az, amikor minden opciót 120-200 másodperces gyakoriságra módosítunk. Ezt mutatja be az alábbi kép is:

  • ajax, admin-ajax, wordpress, woocommerce, hiba, megoldás, optimalizálás, gyorsítás, wp-cron, cron, feladat, frissítve
  • 18 användare blev hjälpta av detta svar
Hjälpte svaret dig?

Relaterade artiklar

Divi / Elementor WordPress Weblap Szerkesztő, Szerkesztése Lassú

A megoldás csak pár kattintás! Nagyon gyakori, hogy mostanában a Divi / Elementor Szerkesztő...

WordPress sablont / témát nem tudom feltölteni

A megoldás csak pár kattintás! PHP Memory limit (memory_limi) és post_max_size érték növelése...

Magento 2.x verziók telepítése, működtetése

A Magento egy ismerten magas erőforrásokkal rendelkező Webshop-rendszer. Telepíthetősége nem csak...

Wordpress komponens telepítése - " PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file " hiba

Egyes esetekben - főleg költöztetett oldalak esetén - előfordulhat az, hogy hibába ütközik egy új...

cURL 28. (REST API) WordPress hiba és megoldása

WordPress admin felületen a Webhelyegészség menüpontban láthatjuk azokat az értesítéseket és...