Cum să Wordpress corect - un forum pentru webmasteri de succes

Cum se cuvine în mod corespunzător

Doar specificați textul de mai jos nu încalcă regulile de titlurile pe forum și subiect o astfel de formulare este conceput doar pentru a atrage atenția comunității, care este încă într-un fel continuă să utilizeze Wordpress fără protecție adecvată, în ciuda avertismentelor mele repetate în ultimii 3-4 ani







Următoarele descriu pericolele exploatării WP, care afectează 99,99% din site-uri. Mai mult decât atât, poate fi utilizat de orice nou-venit. Ce este mai interesant, nu este o gaură, nu o problemă, nu o configurație suplimentară sau un plug-in. Aceasta este o caracteristică documentată a nucleului WordPress!

Am lucrat cu ea de mai mulți ani. Vreau să spun, wordpress finalizat, astfel încât această caracteristică nu mai este la fel de vulnerabilă ca în distribuția implicită. Acum am decis să împărtășesc experiența mea cu publicul și va contribui la "răspândirea" acestor informații proprietarilor site-ului

DoS (Denial of Service) = "Denegare de serviciu". și anume aceasta este o serie de evenimente pe server sau pe site și, în cazul nostru, pe wordpress, al cărui scop este să aducă o problemă cu disponibilitatea resursei web.

DDoS - același lucru, numai acțiunile nu sunt direcționate dintr-o singură sursă, ci dintr-o mulțime. Este D DoS care nu va fi considerat separat, deoarece pentru a proteja împotriva atacurilor distribuite de care aveți nevoie:
1) înțelegeți algoritmul sau natura DoS
2) filtrarea unor surse de solicitare. Dacă ddos ​​nu este atât de puternic, atunci probabil acest subiect va ajuta.

De altfel, conceptul de testare de încărcare și de testare de stres au de a face cu DoS, și anume, scopul lor - pentru a testa sistemul (inclusiv) de a se opune DoS- și DDos-atac. Prin urmare, putem spune, mai jos este o metodă de testare a stresului site-ului dvs. pe Wordpress

Descrierea metodei. Teorie.

Metoda mea de testare (sau dosa, după cum preferați) se bazează pe built-in capabilități WordPress pentru a sorta obiecte (poziții, titluri, tag-uri - indiferent), în ordine aleatorie, și anume, cu ajutorul aleatoare. Caracteristica foarte este descrisă pe site-ul WordPress aici. S-ar părea că este convenabil pentru a adăuga la orice WordPress URL orderby = rand si continutul listei (de exemplu, o listă de posturi) se eliberează de fiecare dată într-o ordine aleatorie. Același lucru este valabil pentru dezvoltarea de plug-in-uri din clasele WordPress au mecanisme similare pentru a obține o listă randomizat de orice obiecte care par prea confortabil la prima vedere și elevii cu plăcere să profite de plug-in-uri, dintre care multe sunt blaturi de pe site-ul wordpress.org

Dar fiecare programator care are experiență în programare (în loc de a alege un deget în fund), știe că aleatoare - uneori rău, dar ce o variabilă aleatoare este mai aproape de distribuția de probabilitate normală ( „perfect aleatoare“), mai rău și mai complicate. Arhitecții noastre „favorit“ WordPress, pentru un motiv oarecare a decis că posturile au nevoie pentru a sorta este o metodă apropiată de idealul, care este, folosind rand funcția (), care este prezent în limbaje de programare sau SQL.

Și acum ne vom gândi ce sortare este în ordinea dezordinirii? nu numai că au luat primele elemente pe care le-au primit și le-au dat drumul. Este necesar să luăm elementele și să le forțăm pe toate să se extindă într-o ordine arbitrară, în funcție de secvența generată de numere aleatorii. În timpul sortimentului, vom obține întotdeauna cele mai proaste planificări. și anume complexitatea va avea tendința să O (x * x), ceea ce este foarte costisitor în utilizarea resurselor. Concluzie: sortarea datelor în ordine aleatorie este o operație foarte costisitoare care trebuie evitată ca un incendiu. Și, atunci când este necesar, programatorii experimentați evită acest lucru, despre care împărtășesc deciziile: o dată. doi. trei. patru, cinci caută în Google. Dar, în cazul unei doze sau a unui site de testare a stresului, această sortare este foarte potrivită!







Faptul că procesorul va fi ceva de-a face cu datele atunci când se compară fără sfârșit - acest lucru este de înțeles, dar cum suntem cu lucruri de memorie? Aici, mult va depinde de cantitatea de date care urmează să fie sortate: - (. Notă), în cazul în care sunt multe, prin urmare, memoria aveți nevoie de o mulțime, în cazul în care nu este suficient există puține, dar oricum nu putem să cache de date, cache-ul este lipsit de putere pentru că nu are rost să cache seturi de date infinit aleatoare .

Revenind la mecanismele de prelucrare a datelor exact în Wordpress, aflăm că sortarea aleatorie se face prin intermediul interogării (SQL) folosind metoda ORDER BY RAND (). Prin urmare, continuați să explorați caracteristicile tehnice ale MySQL:

1) pentru a sorta datele mysql selectate prin selectare, este necesar să se opereze imediat cu toate datele, chiar dacă este necesară doar o mică parte din ele. De exemplu, dacă există 1000 de postări în baza de date și trebuie să arătați primele 10 aleatoare în primele 10, mysql va alege în continuare, apoi sortați toate cele 1000 de posturi și numai apoi tăiați cele 10 elemente necesare. Prin urmare, toate datele sunt procesate simultan (!)

2) mysql are o opțiune în setările (my.cnf), care determină dimensiunea tabelelor temporare din memorie, peste care, tabela temporară este mutată pe disc. Existența acestei variabile, a administratorilor novici sau a proprietarilor de site-uri poate să nu știe și, probabil, există o valoare standard instalată.
Și acum imaginați-vă că sortarea deja rapidă nu se mișcă din memorie pe disc - este foarte rău. Costurile de timp din motive de fier cresc automat cu 1-2 ordine de mărime. Se pare că se creează o astfel de situație, trebuie să sortați o mulțime de date astfel încât să nu se potrivească în memoria din tabelul temporar, iar întregul proces este dus la disc.

3) revenim la eșantionul de 1000 de postări. în mysql există o astfel de caracteristică neplăcută. care este că mai aproape de final avem nevoie de date din eșantion, cu atât mai mult trebuie să așteptăm un răspuns din baza de date, adică solicitați primele 10 posturi din 1000 (LIMIT 0.10) vor fi mult mai rapide și mai ușoare decât ultimele 10 (LIMIT 990.10)

4) În cele din urmă, probele însăși pot fi în condițiile în care, de exemplu, munca indiciilor este dificilă sau, în general, ele lipsesc. De exemplu, aceasta este o mostră a funcției de căutare de pe site, deoarece în mysql va fi reprezentat cumva unde este WHERE. LIKE '% cheie%'. și pentru a avea ca rezultat mai multe obiecte, este necesar să căutăm ceea ce se găsește în fiecare obiect / post, de exemplu: punctul "." - Unde? LIKE '%.%'

Concluzie: trebuie să selectați ultimele elemente dintr-un eșantion mare, pe baza rezultatelor căutării, sortate în funcție de aleatoriu.

Am câteva intrări în blog, deci procesul nu merge pe disc, dar rezultatul nu poate fi stocat în cache, așa că algoritmul îndeplinește OT și TO. Cel mai mare efect va fi pe site-urile wordpress cu un număr mare de posturi.

Totul este simplu. Aveți nevoie de orice instrument referințe reglabile http-cereri în mai multe fire, de exemplu, wget, buclat, interpretor tau preferat sau chiar programul Delphi (deși, sperăm, aceste mamuti au murit). Testerii folosesc astfel de instrumente, dintre care mulți sunt ab, și îmi place httperf. Dar aici pe forum voi arăta un exemplu de comandă bash pe wget:

explicaţie:
- timeout = 0.5 - este necesar să selectați prin experiență, astfel încât wget a reușit să regrupeze serverul și să trimită solicitarea http, iar apoi conexiunea ar trebui să fie tăiată pe jumătate de cuvânt, tk. așteptați ca răspunsul său să nu aibă sens, este mai bine pentru acest moment să trimiteți alte duzini de cereri
- acest exemplu nu utilizează caracteristica de la punctul 3. Pentru aceasta, trebuie mai întâi să calculați numărul de pagini cu rezultate disponibile.
- Metoda POST și agentul de utilizator specificat sunt folosite pentru a nu litiza bustenii

Modalități de rezolvare a problemei:

1) principala modalitate de a rezolva problema - nu folosește Wordpress, pentru că eu sunt încă nu vorbesc despre alte probleme sale arhitecturale, care sunt, de asemenea, ușor de utilizat pentru acest test, și cineva, probabil, deja utilizat ca o alternativă de a propune de a utiliza, de exemplu, Drupal 1. Drupal 2 sau orice altă platformă de dezvoltatorii care au absolvit cel puțin liceul.

2) Dacă prin WordPress pentru a scăpa de nu se poate, atunci problema trebuie rezolvată sau îndepărtarea completă a oportunităților, sau modificarea funcției de sortare, al cărei sens este de a) a lua departe de standardul aleatoriu de înaltă calitate, într-o oarecare extrem de simplificate pseudo-aleatoare, sau b) rezultate cache de sortare (eșantion aleatoriu va consta întotdeauna din același set de date) c) o reducere a dimensiunii eșantionului.

Nu îmi propun serviciile pe care să le optimizez și să salvez WordPress; pentru mine este o etapă trecută. Banii costa de obicei 100-300 USD.

3) De asemenea, puteți încerca să prindeți și să filtrați astfel de cereri suspecte, dar structura lor se poate schimba și în aceste perioade serverul va dormi, ceea ce este neplăcut.







Trimiteți-le prietenilor: