Peeter Marvet, kes aitab aeglaselt avanevaid ja otsirobotite koorma all ägavaid veebe elule äratada iganädalaselt, jagab viit peamist nippi, mida teades õnnestub WordPressile kiirust juurde anda.
Kasuta SSH-d
Mistahes probleemi lahendamine algab selle olemuse mõistmisest ja veebiserveri puhul ei saa läbi logide ja serveri koormuse uurimiseta. Selle juures tuleb appi võtta SSH ehk käsurida.
Käsurealt saab reaalajas vaadata aktiivseid protsesse, andmebaasi- ja veebipäringuid, samuti otsida huvipakkuvaid mustreid kui tahes suurtest logifailidest, mille FTP-ga allalohistamine võtaks aega ja mis tavapärased tekstiredaktorid kokku jooksutaks.
Kui kasutusel on Mac OS või Linux, on mugavaim õpetus GitHubi Generating a new SSH key and adding it to the ssh-agent (abi vajades võib googeldada “github ssh key“. Kui vajalik on Windowsi, PuTTY ja Zone-spetsiifilisem abi, leiab Zone’i abitekstidest juhise SSH ühenduse loomine.
Trikk #0 – vaata logisid!
Mis toimub selles serveris:
cd domeenid/www.example.com/logs/ tail -f apache.ssl.access.log | grep-php
Käsk tail
kuvab faili lõppu ja -f
värskendab väljundit jooksvalt, | grep-php
otsib tulemusest päringuid, mis käivitasid PHP ehk veebirakenduse:
Nagu näha, käib pidev lammutaminewp-login.php
kallal, lisaks hakkavad silmawp-cron.php
ehk ajastatud tegevused ja hulk erinevaid (otsi)roboteid: Yandex, Bing, DuckDuckGo, Ahrefs, Semrush. Õnneks on veebis rea lõpus olev ajakulu suurusjärgus 0,02–0,15 sekundit ehk olematu. Kui aeg hakkab olema üle sekundi, võivad botid kergesti kurja teha.
grep-php, grep-phpslow ja grep-phpveryslow on Zone’i serverites seadistatud aliased, mis aitavad leida PHP- või aeglase PHP-päringuid. Kui neid on vaja seadistada oma arvutis või mujal, siis käskalias
näitab retsepti.
Trikk #1 – asenda wp-cron.php süsteemse cronjob’iga
Näitlikustamiseks ka üks teine sait jagrep-phpslow
annab järgmise tulemuse:
Ouch! 10–50 sekundit töötav cron-päring hõivab ühe veebi teenindamiseks mõeldud PHP-protsessidest – mõistlikum oleks seadistada süsteemne CRONTAB. Sellest räägib eraldi help.zone.eu artikkel WordPressi cron-tööde seadistamine.
Trikk #2 – piira robots.txt abil botte
Kuigirobots.txt
on rangelt soovituslik, tuleb nentida, et suur hulk logides silma hakkavaid botte käituvad igati viisakalt ehk loevad vähemalt kord nädalasrobots.txt
faili ja arvestavad selle suunistega.
Soovituslik on kõigil robotitel mitte pärida sagedamini kui 10 sekundi takka ning keelata päringud, milles sisaldub?
ehk millele on lisatud mingid parameetrid, olgu selleks siiss=otsisõna
võicolor=pink&size=42
kujul e-poe filtrid.
User-Agent: * Crawl-delay: 10 Disallow: /*?* User-agent: AhrefsBot User-agent: AhrefsSiteAudit User-agent: SEMrushBot User-agent: SemrushBot User-agent: SemrushBot-SA User-agent: MJ12bot Disallow: /
Täiendavalt võib keelata konkreetse veebi jaoks väärtust mitte omavad botid, nt kui eita kasuta Ahrefs ja Semrush SEO-tööriistu, on kogu nende tekitatav koormus vesi konkurentide veskile – ja miks neid nuumata?
robots.txt
puhul tuleks meeles pidada, et tühi reavahetus ei ole ilu pärast, vaid eristab erinevatele bottidele suunatud plokke jaUser-Agent: *
reegel kehtib vaid neile, kes endale sobilikku plokki ei leia.
Trikk #3 – kiireks ja jõuliseks piiramiseks kasuta .htaccess’i
Vahel ei pruugi robots.txt
piisav olla, sest seda kontrollitakse periooditi, samas kui koormusprobleem on valus just täna. Kuna viisakad botid panevad oma nimeUser-Agent
’isse kirja, saab veebiserverile anda korralduse neile sobilikku veateadet näidata.
Selleks tuleb veebi juurkataloogis olevasse.htaccess
faili lisada nimekiri soovimatutestUser-Agent
’idest ning lubada neile ligipääs ainultrobots.txt
’ile – lootuses, et nad tulevikus sellega arvestama hakkavad:
RewriteEngine On RewriteCond %{REQUEST_URI} !/robots.txt$ RewriteCond %{HTTP_USER_AGENT} Semrush [NC,OR] RewriteCond %{HTTP_USER_AGENT} AhrefsBot [NC,OR] RewriteCond %{HTTP_USER_AGENT} AhrefsSiteAudit [NC,OR] RewriteCond %{HTTP_USER_AGENT} MJ12bot [NC] RewriteRule .* - [R=503,L]
Trikk #3a – piira hiinabottide ligipääs
Kohati kohtab eriti agressiivseid botte, mis tulevad hulgalt erinevatelt IP-delt, ei huviturobots.txt
’ist ega evi äratuntavatUserAgent
’i.
Sageli tulevad need botid Hiina IP-aadressidelt. Zone’is on veebiserver seadistatud nii, et igal päringul on automaatslet küljes IP-aadressile vastav maakood, miska on lihtne lisada .htaccess faili järgmine plokk:
SetEnvIf MM_COUNTRY_CODE ^(CN) countryBlock Deny from env=countryBlock
Ehk kui maakood algabCN
’iga, siisDeny
.
See vähendab kindlasti olulisel määral müüki Hiina, aga küllap tulevad hiinlaste hordid Helsingi lennujaama ja Talsinki tunneli kaudu peagi ise kohale, seegano harm done.
Trikk #3b – brauseri-cache ilma pluginata
Kui .htacces juba editoris lahti on, tasub teha üks pisiparandus. Nimelt saab väga lihtsalt brauseritele öelda, et ei ole vaja igal lehekuvamisel käia küsimas, kas mõni pilt või CSS on muutunud:
<IfModule mod_expires.c> # Enable expirations ExpiresActive On # Default directive ExpiresDefault "access plus 1 day" # HTML ExpiresByType text/html "access plus 0 seconds" # Data ExpiresByType text/xml "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType application/json "access plus 0 seconds" # Favicon ExpiresByType image/x-icon "access plus 1 year" # Images ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" # CSS ExpiresByType text/css "access plus 1 hour" # Javascript ExpiresByType application/javascript "access plus 1 year" </IfModule>
Trikk #4 – vaata, mis toimub wp_options tabelis
WordPressi puhul võiks edasi liikuda mitmes suunas: pagebuilder, WPML, turvaplugin, megamenüü. Aga jäägu need hilisemaks. Kogenud koristaja võtab esimese asjana ettewp_options
tabeli, sest:
- sinna salvestatakse vaikimisi kogu “ajutine” kraam nn transient’idena;
- transient’ide suurus võib olla kuni 100 megabaiti – ja seda üks kirje;
- neid kirjeid või olla kümneid tuhandeid;
- isegi kui progejad on arvestanud aegumise järel kustutamisega, võib see käia
wp-cron
’ile üle jõu; - seal on veerg
autoload
mis ei ole indekseeritud, ehk igal lehekuvamisel peab SQL otsima kümnete tuhandete ridade hulgast neid, mille indekseerimata väärtus onyes
; - kirjeid võidakse uuendada igal päringul või ajastatud toimingul, mille tulemusena kasvab andmebaas kontrollimatult (näiteks 1 ööga 100 gigabaiti).
Ehk kuiwp_options
on suurem kui umbes 1500 kirjet ja kirje sisu üle mõnesaja kilobaidi, on tegemist olulise probleemiga.
Trikk #5 – vaata, mida kood teeb
Viiendaks on soovitatav tutvuda artikliga Miks mu veeb aeglane on? Vaata BlackFire abil järgi!
Trikk #6 – tule Pop-up Helpdesk’i!
Tegelikult on olemas ka kuues trikk – peaaegu igal esmaspäeval kell 15–19 on Peeter Marvet Tallinnas SpringHub’is ja aitab Pop-up Helpdesk’is kõiki, kes viitsivad kohale tulla ja abi küsida.
Konkreetset kuupäeva tasub Zone FB lehelt ürituste sakist igaks juhuks kontrollida.