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 felhasználó találta hasznosnak ezt
Hasznosnak találta ezt a választ?

Kapcsolódó cikkek

Mért látom a "WordPress Account Compromise Alert" hibaüzenet a WP admin oldalamra belépve?

Mért látom a "WordPress Account Compromise Alert" hibaüzenet a WP admin oldalamra belépve? Mert...

Hogyan tehetjük biztonságosabbá honlapunkat, Wordpress és Joomla rendszerünket?

Egy 2016-ban készült statisztika szerint a világon körülbelül 37 ezer weboldalt fertőznek meg...

Wordpress áthelyezése másik domainra vagy mappába

Ha már van egy felépített Wordpress weboldala aktív domain vagy mappa alatt, és át szeretné ezt...

Wordpress admin jelszó módosítása

Ha nem tud bejelentkezni a WordPress admin felületére (a http://azondomainneve.hu/wp-admin...

Hogyan tudom költöztetni WordPress oldalam?

WordPress oldalát két módon tudja költöztetni, választhatja a manuális illetve a bővítmény általi...