Rješenja tehničke optimizacije za servere. SO Optimizacija serverske infrastrukture. glavni parametri tehničke optimizacije

Nedavno sam dobio zahtjev za pomoć u postavljanju namjenskog servera za pokretanje online trgovine na 1C-Bitrix. Razlog za zahtjev je spor rad stranice.
Pogledali smo stranicu - zaista, nekim stranicama je potrebno više od minute da se učitaju!!! Prva stvar koja je pala na pamet kada se pogledala stranica bila je suboptimalna izvedba komponenti koje je razvio drugi programer. Ali ne u istom iznosu...

Početni podaci: Server na Xeonu - 2GB memorije, RAID. OS - FreeBSD. BUS - Posao.

Pa hajde da pokušamo nekako da ispravimo situaciju...
Odmah da rezervišem da ovaj članak nije uputstvo za rad sa modulom, već stvarni slučaj korišćenja modula. Možda će nekome biti od koristi.

Nakon revizije, identifikovani su sledeći glavni problemi:
1. Morate instalirati PHP akcelerator na server
2. Na stranici /price/ komponenta “nvisions:menu.sections” ima velikih problema - generira se zahtjev prema bazi podataka koji se obrađuje skoro minut - to je glavni razlog dugog učitavanja stranice , kao i veliko opterećenje na serveru.
3. Baza podataka radi sporo (687 zahtjeva za pisanje u sekundi je vrlo malo), problem može biti u konfiguraciji servera. Trebate pretvoriti tablice u InnoDB i konfigurirati InnoDB
4. Datotečni sistem nije jako brz, to može biti zbog hardverskih karakteristika servera (na primjer RAID), ali u principu stranica treba dobro raditi ovom brzinom
5. Postoji problem u šablonu sajta (ne postoje linkovi), potrebno ga je ukloniti - potrebno je mnogo resursa.
6. Potrebno je konfigurirati dvorazinsku arhitekturu na serveru (servirati statički sadržaj putem nginx-a), to će značajno smanjiti opterećenje na Apache serveru, stabilizirati potrošnju memorije tokom opterećenja, samim tim ubrzati rad i povećati pouzdanost projekat u celini.

Hajde da analiziramo informacije iz modula performansi 1C-Bitrix:

Slika jasno pokazuje probleme sa serverom baze podataka, najvjerovatnije postavke nisu optimalne, jer namenski server.
Broj operacija s datotekama je također sumnjivo nizak.


Očigledni problemi sa kodom ili komponentama na /price/index.php stranici
Sumnjivo dugo vreme generisanja za /bitrix/urlrewrite.php – pogledajte dalje:

Da, ovo je izvor problema: predložak sadrži vezu do nepostojeće slike, to generiše grešku 404 i prisiljava Apache da obradi ovu grešku i generiše punopravnu stranicu.

Isti problem utječe na sve stranice na web lokaciji povezane s problematičnim predloškom:


A evo problematičnih komponenti na stranici:


Komponenta menija ima onemogućeno keširanje.
Sažetak stranice:

Pa, evo jedne brze analize. Koliko je praktičan modul performansi vam govori „gde su problemi“. Počnimo s rješavanjem problema:

Dodali smo sliku na koju postoji link, samo smo dodali sliku, a nismo uklonili linkove, jer... bilo je mnogo veza, uključujući i komponente trećih strana. Takođe na ovoj stranici smo onemogućili problematičnu komponentu treće strane (nsvision:menu.sections), jer njegova svrha nije jasna. (nakon prekida veze, ništa se nije promijenilo spolja)
rezultat:


Urlrewrite.php se sada ne poziva na svaki pogodak



Kao što vidite, brzina rada se povećala za 2 puta (!).

idemo dalje:
Instalacija acceleratora. Neću ovdje opisivati ​​kako se instalira akcelerator, jer... ove informacije, ako je potrebno, uvijek se mogu pronaći na internetu.







Rezultat nakon instaliranja eAcceleratora: Još jedno dvostruko povećanje produktivnosti.

idemo dalje: Optimizacija baze podataka(prenesite u InnoDB i optimizirajte postavke)


Kao što se može vidjeti iz testa modula performansi, brzina baze podataka je značajno porasla
Općenito, ukupne performanse nakon optimizacije baze podataka ostale su nepromijenjene, vjerovatno zbog sporog rada sistema datoteka.

AŽURIRANJE:
Preporuke modula performansi.
Prateći preporuke modula, onemogućavamo parametar "open_basedir", jer server je posvećen samo našem projektu, mislimo da sigurnost u cjelini neće biti ugrožena.

rezultat:


Rezultat je, kako kažu, DOSTUPAN

Ostaje samo da prepišete "krive" komponente i projekat će proletjeti.

Takođe smo instalirali i konfigurisali nginx kao proxy server za Apache. Slike ne stavljam jer... brojke su ostale gotovo nepromijenjene. No, prema subjektivnoj procjeni, stranice se sada učitavaju par puta brže.

Predlošku još uvijek treba dosta vremena da se generiše (vrijeme generiranja je skoro isto kao i kernel sistema) - očigledno, prethodni programer nije optimalno napisao kod. Nema vremena, nema budžeta, nema želje za raščlanjivanjem tuđeg koda. Lakše je, brže i jeftinije napisati svoj kod od nule.

Općenito: Modul performansi je vrlo koristan i zgodan alat za otklanjanje grešaka u radu projekta i servera. Za to, hvala njegovim programerima.

P.S. Lično, imam malo iskustva u radu sa Linuxom. Po prvi put sam se blisko upoznao sa FreeBSD-om. Iznenadilo me je da su nakon instaliranja nekog softvera konfiguracijske datoteke potpuno prazne (na primjer, MySQL). Bio sam zadovoljan lakoćom instaliranja softvera sa “portova”.

", smjer "Sistemi prijenosa podataka".

Prije nego što uđemo u tehničke zamršenosti WAN optimizacije, hajde da shvatimo šta je to i čemu je namijenjena.

Nedavno je postala evidentna migracija IT struktura na decentralizovani računarski model, u kojem kompanije distribuiraju svoje procesne centre širom sveta. Kao rezultat toga, povećao se obim podataka i broj IT resursa pohranjenih izvan korporativnih podatkovnih centara (DC), a šefovi odjela sada traže načine za konsolidaciju svoje IT infrastrukture. Preduzeća su shvatila prednosti koje konsolidacija donosi u smislu smanjenja složenosti infrastrukture, smanjenja troškova, poboljšanja korištenja resursa i zaštite podataka.

Centralizacija resursa i podataka pokazuje prednosti opisane iznad, ali postoje različite zamke koje organizacije koje planiraju optimizirati svoju IT infrastrukturu trebaju imati na umu. Jedan od problema s kojima će se suočiti je sporije performanse aplikacije. Popularnost modela distribuiranog računarstva bila je u velikoj mjeri vođena potrebom da se IT resursi drže što bliže korisnicima distribuirane mreže kako bi se osigurale maksimalne performanse. Konsolidacija servera na centralnoj lokaciji preokreće obrazac alokacije resursa i stoga degradira performanse mnogih aplikacija.

Da bi riješile problem, organizacije proširuju kapacitet WAN veza u pokušaju da smanje vrijeme odgovora. Tada otkrivaju da proširenje kanala nema praktički nikakav (ili minimalan) utjecaj na brzinu aplikacija, jer problem leži u velikom kašnjenju u prijenosu podataka preko kanala i korištenju protokola koji su nedjelotvorni za rad sa WAN-om. Osim toga, proširenje propusnog opsega izvan Moskve možda uopšte nije isplativo. I upravo za takve zadatke koristi se oprema za optimizaciju WAN kanala.

Globalno, takva rješenja za optimizaciju WAN-a mogu smanjiti troškove za organizacije na nekoliko načina:

    smanjiti troškove propusnog opsega komunikacijskog kanala. Zapravo, organizacije će moći bez kupovine dodatnog propusnog opsega, što je ključni uslov za mnoge kompanije kada započinju projekte implementacije WAN optimizatora;

    konsolidovati infrastrukturu u data centru. Kompanije će biti u mogućnosti da uklone značajan dio IT infrastrukture (serveri datoteka i pošte, serveri za distribuciju softvera, SharePoint portali, trake, itd.) iz udaljenih ureda bez gubitka performansi i mogućnosti upravljanja;

    pojednostaviti infrastrukturu udaljene kancelarije. Neki proizvođači nude softversku platformu u svojim uređajima koja omogućava korisnicima da hostuju neke od servisa preostalih nakon konsolidacije data centra (na primer, server za štampanje, DHCP server, servisi datoteka) direktno na uređaju za optimizaciju. To omogućava dodatno smanjenje operativnih troškova.

Šta je WAN optimizacija? Rješenje za optimizaciju funkcionisanja mrežnih aplikacija koristi klijent-server arhitekturu i princip sesije mrežnih aplikacija. Njegov glavni zadatak je optimizirati sesije aplikacije. U suštini, ovo je skup uređaja za poboljšanje performansi aplikacija instaliranih u centru i u svakoj regionalnoj (lokalnoj) kancelariji kompanije. Oni propuštaju sav promet kroz sebe, "presrećući" i optimizirajući radne sesije aplikacije.

Postoji veliki broj proizvođača koji nude rješenja u području optimizacije prijenosa prometa preko dugih WAN kanala. Najpoznatiji od njih na ruskom tržištu su Riverbed (sa svojim SteelHead proizvodom), Cisco (WAAS proizvod), Juniper (WXC proizvod) i BlueCoat (ProxySG proizvod).

Proces optimizacije opreme koju nude baziran je na približno istim mehanizmima, koji uključuju kompresiju podataka, keširanje, optimizaciju TCP protokola i optimizaciju operativne logike samih poslovnih aplikacija.

Svi razmatrani mehanizmi optimizacije aplikacija koriste segmentaciju sesije, dijeleći je između klijenta i servera na tri segmenta: između uređaja za optimizaciju i radne stanice, između uređaja preko WAN mreže i između uređaja za optimizaciju i podatkovnog centra (servera). U prvom i trećem segmentu sesija se odvija preko LAN-a, a nedostaci u TCP protokolu ne utiču na kašnjenje aplikacije. Drugi segment je optimizovan podešavanjem TCP brzine. Kao rezultat, osigurani su neophodni minimumi: u smislu kašnjenja pri prijenosu prometa preko WAN-a i vremena odgovora aplikacije. Pogledajmo mehanizme koji, u ovom ili onom obliku, leže u osnovi odluka svakog proizvođača optimizatora.

Kompresijski mehanizmi su u stanju da ubrzaju prenos podataka povećanjem informacionog sadržaja prenosa informacija po jedinici vremena. Najčešće se podaci koji se prenose putem mreže prikazuju u neoptimalnom formatu i nerazumno su velikog obima. Sada, uz aktivnu upotrebu u razvoju aplikacija, na primjer, XML-a ili drugih jezika za predstavljanje informacija u tekstualnom obliku, nema potrebe da brinete o predstavljanju podataka. Ovo povećava brzinu i lakoću razvoja, ali u isto vrijeme dovodi do prenosa suštinski nestrukturiranih podataka preko mreže, uvodeći velike količine redundantnosti u promet.

Kompresija saobraćaja eliminiše ovaj nedostatak. Motori za optimizaciju aplikacija koriste algoritam kompresije podataka bez gubitaka (kao što je Lempel-Ziv) i algoritam za eliminaciju duplih blokova. Kombinacija ova dva algoritma nam omogućava da postignemo najviši stepen kompresije informacija bez gubitaka, čime se obezbeđuje brz prenos informacija čak i preko kanala relativno male brzine.

Funkcionalnost kompresije, u ovom ili onom obliku, nalazi se u gotovo svakom modernom ruteru i, zapravo, ovdje su moderni optimizatori započeli svoj put. Mrežni administratori vrlo često vjeruju da je to ozloglašena optimizacija, uvjeravajući svoje menadžere da nema potrebe za kupovinom posebnih uređaja. I tu griješe, kao što ćemo vidjeti kasnije.

Mehanizmi za keširanje također pomažu u smanjenju količine prenesenog prometa. U distribuiranoj mreži često se javljaju situacije kada svi zaposleni u kompaniji trebaju prenijeti iste podatke. Na primjer, prilikom ažuriranja softverskih proizvoda ili baza podataka antivirusnog softvera, prijenosa zahtjeva menadžmenta kompanije, multimedijalnih datoteka i programa obuke, javnih biblioteka dokumenata. Korištenje uređaja za optimizaciju omogućava da se ove informacije keširaju, odnosno prenesu jednom preko WAN-a, a zatim daju svakom korisniku lokalno (sa tvrdog diska najbližeg uređaja za optimizaciju), a ne sa udaljenog globalnog resursa.

Važna razlika od konvencionalnih uređaja za keširanje je činjenica da optimizatori razbijaju informacije u dijelove/blokove i spremaju ih na tvrdi disk. Ovo je zanimljivo sa stanovišta da ako promijenimo neke informacije u novoprenesenoj datoteci (na primjer, ubacimo slajd ili sliku u dokument), onda će se prenijeti promjena, a ne cijeli fajl . Mehanizmi za dinamičku podjelu prenesenih informacija u blokove i praćenje promjena su vlasnički i ne podliježu otkrivanju. Ako govorimo o karakteristikama rada, proizvođači koriste 2 pristupa. Posebnost prvog od njih je njegovo ujedinjenje, tj. pri prijenosu jedne datoteke u različite grane, samo jedna kopija datoteke će biti sačuvana u centralnom optimizatoru za sve uređaje za udaljenu optimizaciju. U drugom slučaju, prostor na hard disku se dinamički dijeli srazmjerno broju udaljenih ureda (remote optimizers), a ako se jedna datoteka prenese u sve grane, slična kopija će se odraziti u svakom segmentu tvrdog diska koji je „odgovoran“ za svoju granu.

Očigledno, mehanizam za keširanje radi u tandemu sa mehanizmom kompresije. Zahvaljujući ova dva mehanizma proizvođači optimizatora pokazuju prekrasne grafikone gdje nivo optimizacije može doseći 150-200X. Iste podatke smo uspjeli dobiti pri slanju iste velike datoteke više puta, jer je nakon prvog prijenosa ona bila pohranjena u keš uređaja, a zatim su prebačeni samo kilobajti linkova koji upućuju na lokaciju datoteke na tvrdom disku. Ovdje se odmah postavlja logično pitanje: koliki je kapacitet tvrdog diska i da li je moguće spojiti eksternu pohranu na optimizatore? Neki proizvođači su svojevremeno spominjali mogućnost pojave ovakve opreme (ali će ona već biti namijenjena isključivo za ugradnju u podatkovni centar).

TCP optimizacijski mehanizmi rad na nivou transporta. Ovo je glavno “bojno polje” proizvođača optimizatora prije nego što su počeli da se “penju” na više razine (aplikacija). TCP transportni protokol razvijen je 1980. godine i danas nije pretrpio veće promjene, dok su se tehnologije prijenosa podataka značajno promijenile. Kada se paketi izgube, standardni TCP protokol naglo smanjuje brzinu - skoro za polovinu, a njeno povećanje sa ovog nivoa se naknadno dešava linearno i u malim koracima. Stoga, čak i relativno mali gubitak paketa (2-3% gubitaka se smatra normalnim) dovodi do čestih i oštrih gubitaka brzine mreže.

Optimizovani TCP protokol, kada dođe do gubitka, smanjuje brzinu ne za 2 puta, već za samo nekoliko procenata, a sa jednim gubitkom paketa, brzina se vrlo malo smanjuje. Pokazalo se da rješenje za optimizaciju funkcioniranja mrežnih aplikacija prvenstveno povećava brzinu prijenosa informacija. Maksimalno iskorišćenje celokupnog opsega kanala za prenos podataka obezbeđeno je poboljšanom radnom procedurom TCP protokola.

Mehanizmi optimizacije na nivou aplikacije nude ubrzanje samih poslovnih aplikacija putem WAN kanala. Implementacija nekih protokola u popularnim proizvodima, nažalost, daleko je od savršenstva. Konkretno, protokol CIFS (Common Internet File System), koji se aktivno koristi u Microsoft mrežama, stvara preveliku količinu servisnih poruka (potvrda isporuke, spremnost uređaja itd.). U lokalnoj mreži ovi ekscesi ne donose značajno kašnjenje u vremenu odgovora, ali u distribuiranoj mreži postaju značajni. Optimizacijski uređaji su u stanju obraditi većinu nevažnih poruka lokalno, bez prijenosa preko WAN-a, smanjujući količinu prometa i smanjujući vrijeme odgovora brojnih funkcija mrežnih aplikacija, kao što su mrežno štampanje, pristup fajl servisima itd. Zapravo, danas se upravo u ovoj oblasti proizvođači takmiče. Najčešće optimizovani protokoli uključuju CIFS, NFS, MAPI, Video, HTTP, SSL i Windows štampanje. Ovaj „džentlmenski set“ prisutan je u portfelju gotovo svakog proizvođača, ali je optimizovan na različite načine.

Iz svega navedenog proizilazi da promet od izvora do primatelja prolazi kroz najmanje dva optimizacijska uređaja i na svakom od njih se obrađuje do aplikacije.

Nije teško pretpostaviti da svi optimizatori rade sa aplikacijama zasnovanim na TCP-u, što znači da ostatak saobraćaja prolazi bez optimizacije. Isto se može reći i za šifrirani promet (izuzetak je, možda, SSL - mnogi optimizatori mogu "razbiti" sesiju, optimizirati promet i šifrirati ga nazad).

Kompanije s distribuiranom strukturom koje žele smanjiti troškove za telekom operatere mogu biti zainteresirane za takvo rješenje. To se može manifestirati i u slučaju korištenja tarifa po megabajtu (efekat je očigledan) i u slučaju neograničenih (prelazak na tarifne planove niže brzine). Danas je to možda i najzanimljivija svrha korištenja ovakvih uređaja. Ostali bonusi, ne tako očigledni i transparentni, mogu biti: konsolidacija servera, smanjenje broja IT osoblja u udaljenim kancelarijama, povećana produktivnost zbog povećane brzine aplikacije.

U borbi za interesovanje za optimizatore, proizvođači nude i mogućnosti za optimizaciju rada mobilnih zaposlenih instaliranjem specijalizovanog softvera na laptop računare i mogućnost instaliranja virtuelnih servera na bazi jednog optimizatora u udaljenoj kancelariji. Softver za laptope je sličan kodu softveru na samim optimizatorima, tj. Laptop postaje poput optimizatora.

Pored kompanija s distribuiranom strukturom, ovo rješenje može biti interesantno i operaterima koji kompanijama mogu pružiti usluge optimizacije (na primjer, iznajmljivanje). Takve usluge postaju popularne u Evropi.

Najčešće rešenje za optimizaciju je, naravno, Cisco WAAS. Dobar marketing dobavljača, dobro rješenje i strategija razvoja rade svoj posao. Sa pojavom serije pristupačnih i pouzdanih WAVE, Ciscova pozicija je postala još jača.

Juniperovo WXC rješenje se razlikuje po tome što je sav promet spakovan u UDP tunel, tj. optimizacija se dešava u celom saobraćaju. Ovaj pristup svakako ima svoje prednosti. Uključio bih prilično visoku vrijednost optimizacije „prosjeka bolnice“ u cijelom prometu (na osnovu testiranja s jednim velikim kupcem).

Riverbed je došao u Rusiju ne tako davno, ali aktivno razvija svoju partnersku mrežu. Ima značajne prednosti u odnosu na konkurentska rješenja (na primjer, kompetentan mehanizam za keširanje, optimizacija aplikacije), ali visoka cijena rješenja i dalje sprječava rast njegove popularnosti.

Sumirajući sve gore navedeno, želio bih napomenuti da je WAN optimizacija zanimljivo rješenje, prilično transparentno za poslovanje, ali, nažalost, još nije dobila veliku potražnju u ruskim kompanijama. Na osnovu implementacija, bilo je moguće smanjiti promet u prosjeku 2-3,5 puta i značajno ubrzati odgovore aplikacija. Na primjer, jedan od naših kupaca, na satelitskim linijama, uštedio je oko 20 sati odgovora tokom mjesec dana testiranja. Za našu kompaniju, implementacija ovog rješenja nam je omogućila dvostruku uštedu pri plaćanju mrežnog saobraćaja, kao i povećanje brzine korporativnih aplikacija u prosjeku 1,7 puta. Istovremeno, povrat ulaganja u projekat bio je samo 3 mjeseca.

U svakom slučaju, ako ste zainteresovani, najbolje je prvo da testirate rešenje oko mesec dana, a tek na osnovu rezultata takvog testiranja može se reći koliko je efikasna implementacija optimizatora u odnosu na konkretnu mrežu. Najbolje je uključiti iskusne sistem integratore da razviju rješenje, provedu testiranje i instalaciju.

Efikasan SEO može ometati samo jedna dosadna greška u tehničkoj optimizaciji stranice, ali to će dovesti do toga da roboti pretraživača neće moći ispravno indeksirati resurs, razumjeti strukturu stranice, a korisnici će ne pronađu informacije koje su im potrebne. Sve će to zauzvrat dovesti do niskog ranga stranice.

Tehnička optimizacija web stranice je skup mjera koje imaju za cilj prilagođavanje tehničkih aspekata resursa kako bi se poboljšala njegova interakcija s robotima pretraživača. Tehnička optimizacija omogućava najbrže i najpotpunije indeksiranje stranica stranice.

5 glavnih tehničkih parametara optimizacije

1. Robots.txt fajl

Važno je napomenuti da datoteka robots.txt mora biti sadržana u korijenskom direktoriju svakog resursa. Ovo je prva datoteka kojoj PS roboti pristupaju kada posjete stranicu i u kojoj su pohranjene upute za njih.

Ova datoteka specificira parametre indeksiranja stranice: koje stranice treba uključiti u bazu podataka pretraživanja, a koje treba isključiti. Osim toga, može specificirati direktive kako za sve robote tražilice odjednom, tako i za robote svake tražilice posebno. Možete saznati više o kompajliranju ove datoteke i njenom postavljanju na web-mjestu za pomoć webmasterima Yandexa.

Datoteku možete provjeriti u usluzi Yandex.Webmaster, stavka menija “Analiza robots.txt” (https://webmaster.yandex.ru/robots.xml).

2. Sitemap - mapa stranice

Mapa sajta je jedna od stranica izvora, čije su informacije slične sadržaju obične knjige. Ova stranica se koristi kao navigacijski element. Mapa stranice sadrži potpunu listu odjeljaka i/ili svih stranica objavljenih na resursu.

HTML sitemap je potreban korisnicima za brzo i jednostavno pronalaženje informacija, a XML je potreban pretraživačima za poboljšanje indeksiranja sajta.

Uz pomoć mape stranice, roboti za pretraživanje vide cijelu strukturu i brže indeksiraju nove stranice.

Provjera mape stranice(https://webmaster.yandex.ru/sitemaptest.xml)

Primjer ispravnog sitemapa u .html formatu:

3. Preusmjeravanja (preusmjeravanja)

Preusmjeravanje se koristi za preusmjeravanje posjetitelja web stranice s jedne stranice na drugu. Postoji mnogo primjera zašto su potrebna preusmjeravanja:

  1. Promjena naziva domene stranice.
  2. Ogledala od šperploče. Mnoge stranice nemaju konfigurisano 301 preusmjeravanje sa domene koja sadrži www u adresi na domenu bez www, ili obrnuto.

Preusmjeravanja moraju biti unesena u .htaccess datoteku. Budući da pretraživači mogu smatrati site.ru i www.site.ru različitim stranicama, duplikati se mogu pojaviti u rezultatima. To će stvoriti poteškoće s rangiranjem u rezultatima pretraživanja itd.

Glavni statusni kodovi preusmjeravanja:

  • 300 - Višestruki izbori (nekoliko opcija koje možete izabrati);
  • 301 - Trajno preseljeno (zauvijek);
  • 302 - Privremeno preusmjeravanje;
  • 303 - Vidi Ostalo (traženi izvor se može naći na drugoj adresi);
  • 304 - Nije izmijenjen (sadržaj nije promijenjen - to mogu biti slike, stilovi itd.);
  • 305 - Koristi proxy (pristup mora biti preko proxyja);
  • 306 - Nekorišteno (nije u upotrebi).

Korisna usluga za određivanje odgovora stranice: http://www.bertal.ru/

4. Prilagođavanje prikaza URL stranica

Važno je provjeriti web stranicu kako biste bili sigurni da su adrese svih njegovih stranica konzistentne. Na primjer, na cijeloj web stranici stranice moraju imati završnu kosu crtu: http://site.ru/katalog/ i http://site.ru/products/. Ako neke stranice izgledaju kao http://site.ru/katalog, a neke kao http://site.ru/products/, ovo je netačno.

Bit će zgodno provjeriti adrese internih stranica resursa na greške nakon kreiranja mape web mjesta.

5. Greške stranice

Kada se bilo koja stranica na web mjestu učita, zahtjev se šalje serveru, koji odgovara HTTP statusnim kodom i učitava (ili ne učitava) stranicu.

Osnovni statusni kodovi:

  • 200 - stranica je u redu;
  • 404 - nepostojeća stranica;
  • 503 - server je privremeno nedostupan.

“404 greška” je jedan od najvažnijih tehničkih parametara optimizacije, koji se mora poboljšati.

Ako stranica postoji, a server obavijesti o grešci 404 kada je zatraži, onda stranica neće biti indeksirana od strane pretraživača. U suprotnom, veliki broj stranica sa istim tekstom može završiti u indeksu, što se izuzetno negativno odražava na rangiranje.

Možete provjeriti statusne kodove koristeći http://www.bertal.ru/ ili Yandex.Webmaster.

Razmotrili smo samo glavne parametre tehničkog poboljšanja stranice, na koje prvo morate obratiti pažnju. Ako pronađete takve greške na svojoj web stranici ili imate poteškoća da ih otklonite, kontaktirajte samo profesionalnu SEO kompaniju.

Postoji nekoliko metoda koje možete koristiti za povećanje performansi servera, ali najbolja je optimizacija.

Optimizacija operativnog sistema (FreeBSD)

  • Prelazak na 7.x je korisno za sisteme sa više jezgara jer se mogu koristiti novi ULE 3.0 Scheduler i jemalloc. Ako koristite stari 6.x sistem i on ne može da se nosi sa opterećenjem, onda je vreme da pređete na 7.x.
  • Prelazak na 7.2će vam omogućiti da povećate KVA, optimizirate po defaultu sysctl i koristite superstranice. Novi FreeBSD 8.0 je već u pripremi, koji će značajno povećati produktivnost.
  • Prelazak na amd64 omogućava povećanje KVA i Shared Mem volumena na više od 2Gb. Potrebno je stvoriti uslove za razvoj servera, jer se baze podataka stalno povećavaju i zahtijevaju veće veličine.
  • Rasterećenje mrežnog podsistema u FreeBSD-u će pomoći u optimizaciji servera. Ovaj proces se može obaviti u dvije faze: podešavanje parametara ifconfig i postavke sysctl.conf/loader.conf. U fazi pripreme trebali biste provjeriti mogućnosti mrežne kartice. Upravljački programi iz Yandexa pomoći će povećati brzinu korištenjem više niti; često se koriste za višejezgrene procese. Za trećerazrednu mrežnu karticu, anketiranje je najbolje rješenje. Najnovija ažurirana verzija podešavanja FreeBSD 7 pomoći će u rješavanju problema.
  • FreeBSD i ogroman broj fajlova rade odlično zahvaljujući keširanju imena datoteka u direktoriju. Pretraživanje hash tablice će vam pomoći da brzo pronađete potrebnu datoteku. Iako je maksimalna količina memorije oko 2MB, možete je povećati sve dok vfs.ufs.dirhash_mem to dozvoljava.
  • Softupdates, gjournalImount opcije- Ovo su novi terabajtni vijci koji imaju odlične performanse. Ako struja nestane, njihov fsck će potrajati jako dugo, tako da možete koristiti ažuriranja softvera ili logovati putem gjournala.

Frontend optimizacija (nginx)

Ovaj tip se može klasifikovati kao preuranjena optimizacija, iako će pomoći da se poveća ukupno vreme odziva sajta. Među standardnim optimizacijama, vrijedi obratiti pažnju na reset_timedout_connection; sendfile; tcp_nopush i tcp_nodelay.

  • Prihvati filtere je tehnologija koja omogućava prijenos informacija iz kernela u proces u slučaju pristizanja novih podataka ili primanja važećeg http zahtjeva. Ovi filteri će vam pomoći da rasteretite server kada postoji veliki broj konekcija.
  • Keširanje nginx se odlikuje fleksibilnošću i proizvodi se iz fastcgi ili proxy backenda. Svako može pametno koristiti keširanje u svom projektu.
  • AIO je vrlo koristan za određena opterećenja servera, jer štedi vrijeme odgovora uz smanjenje broja radnika. Nove verzije nginxa omogućavaju korištenje aio-a u tandemu sa sendfileom.

Backend optimizacija

  • APC je okvir koji vam omogućava da smanjite opterećenje keširanjem prevedenog koda u OP. APC zaključavanje je vrijedno ažuriranja, jer može usporiti i mnogi ljudi počinju koristiti eAccelerator umjesto APC-a. Vrijedi zamijeniti zaključavanje spinlockom ili pthread mutexom. Vrednost APC nagoveštaja treba da se poveća ako postoji veliki broj .php fajlova ili ako se često keširaju u kešu APC korisnika. APC fragmentacija je znak da koristite APC neprikladno. Ne može samostalno brisati zapise po TTL ili LRU.
  • PHP 5.3će pomoći u povećanju produktivnosti, tako da je vredno nadograditi vašu PHP verziju, iako lista zastarjelih funkcija može uplašiti mnoge.

Optimizacija baze podataka

Postoji mnogo ideja za poboljšanje performansi MySQL-a na Internetu, jer se svaki web projekat prije ili kasnije suoči s ograničenjima u količini memorije, diska ili procesora. Stoga jednostavna rješenja neće pomoći u rješavanju problema, vrijedi potrošiti više vremena na profilere (dtrace, systemtap i oprofile), kao i korištenje velikog broja dodatnog softvera. Ne samo da je potrebno biti u stanju savršeno koristiti indekse, sortirati ih i grupirati, već i znati kako sve ovo funkcionira unutar MySQL-a. Također morate znati prednosti i nedostatke različitih mehanizama za pohranu podataka, razumjeti Query cache i EXPLAIN.

Postoji nekoliko načina za optimizaciju MySQL-a, čak i bez promjene kodova, jer se polovina podešavanja servera može obaviti u poluautomatskom načinu pomoću tuningprimer, mysqltuner i mysqlsla uslužnih programa.

  • Prelazak na 5.1 pruža mnoge prednosti, među kojima je vrijedno istaknuti optimizaciju optimizatora, particioniranje, InnoDB dodatak i replikaciju zasnovanu na redovima. Kako bi ubrzali stranicu, neki entuzijasti ekstremnih sportova već testiraju verziju 5.4.
  • Prelazak na InnoDB pruža mnoge pogodnosti. Usklađen je sa ACID-om, tako da se svaka operacija izvodi sa samo jednom transakcijom. Ima zaključavanje na nivou reda, što omogućava istovremeno čitanje i pisanje mnogih niti odvojeno jedna od druge.
  • Ugrađena MySQL keš memorija – Query Cache prilično je teško razumjeti, pa ga mnogi korisnici neracionalno koriste ili ga isključuju. Za njega više ne znači bolje, tako da ne vrijedi maksimizirati ovaj podsistem. Cache upita je paraleliziran; kao rezultat toga, ako se koristi više od osam procesa, to će samo usporiti cijeli proces i neće pomoći u smanjenju vremena učitavanja stranice. Sadržaj ovog podsistema, koji se odnosi na određenu tabelu, poništava se kada se promene u toj tabeli. To znači da Query Cache daje pozitivne rezultate samo kada se koriste dobro dizajnirane tabele.
  • Indeksi mogu biti štetni i za SELECT (ako ih nema) i za INSERT/UPDATE (ako ih ima više). Indeks koji više nije u upotrebi i dalje zauzima memoriju i na taj način usporava promjene podataka. Da biste riješili ovaj problem, trebali biste koristiti jednostavan SQL upit.

PostgreSQL

Postgres sistem je prilično raznovrstan, jer pripada Enterprise klasi i Skype na njemu odlično radi, ali se u isto vrijeme može instalirati čak i na mobilni telefon. Među 200 dostupnih parametara, njih 45 je osnovnih i odgovornih za podešavanje.

Na Internetu možete pronaći mnogo korisnih informacija o podešavanju Postgresa. No, neki članci su već zastarjeli, pa treba početi od datuma objavljivanja i obratiti pažnju na informacije gdje se koristi ključ vacuum_mem ili u novim verzijama maintenance_mem. Napredni programeri će moći pronaći mnoge visokokvalitetne rasprave; u nastavku ćemo navesti samo one osnove koje će pomoći prosječnom korisniku da poboljša svoj projekat.

  • Indeksi PostgreSQL je uvijek na prvom mjestu, dok u MySQL-u oni uvijek zauzimaju posljednje pozicije, a to se može objasniti činjenicom da PostgreSQL indeksi imaju ogromne mogućnosti. Programer mora dobro razumjeti takve indekse i znati kada i koji treba koristiti, kao što su GiST, GIN, hash i B-stablo, kao i parcijalni, višestupačni i on izrazi.
  • pgBouncer i njegove alternative se prvo moraju instalirati na server baze podataka. Bez spremišta veze, svaki zahtjev kreira poseban proces koji koristi RAM. Čini se da nije ništa loše, ali kada kreirate više od 200 veza, čak i vrlo moćan server ima poteškoća s obradom informacija. pgBouncer pomaže u rješavanju ovog problema.
  • pgFouine je nezamjenjiv program, jer se može sa sigurnošću nazvati analogom mysqlsla u php. U tandemu sa Playr-om, može izvršiti optimizaciju upita u teškim uslovima na serverima za postavljanje.

Rasterećenje baze podataka

Da biste optimizirali rad baze podataka i povećali njene performanse, trebali biste je koristiti što je manje moguće.

  • SphinxQL može se koristiti kao MySQL server. Da biste to uradili, potrebno je samo da kreirate sphinx.conf, kao i unose za indekser u cron i prebacite se na drugu bazu podataka. Sa ovim radnjama nema potrebe čak ni mijenjati kod. Prelazak na SphinxQL pomoći će poboljšanju brzine i kvaliteta pretraživanja i zaboraviti na MyISAM i FTS.
  • Ne-RDBMS memorija omogućava vam da ne koristite relacionu bazu podataka. Možete odabrati Hive ili Oracle. Baza podataka ključ/vrijednost, zbog svoje brzine, koristi selekcije iz relacijskih baza podataka za dalje keširanje. Vlasnici velikih PHP projekata mogu koristiti odličnu funkciju keš koda za pohranjivanje svih prilagođenih podataka. Uz njegovu pomoć možete pouzdano sačuvati čak i promjene od globalnog značaja, jer zauzimaju malo prostora i praktički ne zauzimaju memoriju, a brzina uzorkovanja se također može značajno povećati. Ako se za veliki projekat blok globalnih promjena upiše samo na jednu mašinu, tada se promet povećava i počinje jako usporavati. Da biste riješili ovaj problem, morate pohraniti globalne varijable u predmemoriju operacijskog koda ili klonirati varijable na svim serverima i dodati izuzetke u algoritam heširanja konzistentnosti.
  • Kodiranja pogledajte efikasne metode za istovar baze podataka. Vrijedi napomenuti da je UTF-8 odličan izbor, ali na ruskom zauzima puno prostora, tako da za jednojezični kontingent prvo treba razmisliti o racionalnoj upotrebi kodiranja.
  • Asinhronija će pomoći u smanjenju vremena odgovora aplikacije ili web stranice, kao i značajno smanjiti opterećenje samog servera. Batch zahtjevi se izrađuju mnogo brže od uobičajenih pojedinačnih zahtjeva. Za velike projekte možete koristiti RabbitMQ, ApacheMQ ili ZeroMQ poruke, a za male projekte možete koristiti samo cron.

Dodatne aplikacije za optimizaciju

  • SSHGuard ili njegova alternativa je standardna praksa za ssh. Anti-brute force pomaže u stvaranju pouzdane zaštite servera od napada botova.
  • Xtrabackup iz Percone je odličan MySQL backup alat koji ima puno postavki. Ali idealno rješenje je i dalje pozivati ​​klonove u ZFS, jer se vrlo brzo kreiraju, a da bi se baza podataka vratila dovoljno je promijeniti putanje do datoteka u mišićnoj konfiguraciji. Klonovi vam omogućavaju da vratite svoj sistem od nule.
  • Prenesite poštu na drugi hostće uštedjeti promet i IOP-ove ako je vaš server jednostavno bombardiran neželjenom poštom.
  • Integracija sa softverom treće strane pomoći će u optimizaciji mysql servera. Na primjer, možete koristiti smtp/imap vezu za razmjenu poruka, koje neće zauzimati puno memorije. Za kreiranje razgovora dovoljno je koristiti osnovu jabber servera sa javascript klijentom. Ovi sistemi, koji se zasnivaju na adapterima za gotove proizvode, veoma su skalabilni.
  • Monitoring je veoma važna komponenta, jer je nemoguće bilo šta optimizirati bez detaljne analize. Potrebno je pratiti metriku performansi, slobodne resurse i kašnjenja; Zabbix, Cacti, Nagios i drugi alati će pomoći u tome. Web Performance Test vam omogućava da izračunate brzinu učitavanja web stranice ili projekta, tako da je vrlo koristan u praćenju. Prilikom postavljanja poslužitelja performansi, zapamtite da će samo temeljita analiza pomoći u otklanjanju svih problema i izvršenju optimizacije.

Ako niste razumeli pola napisanog, nema veze.