Rješenja za tehničku optimizaciju poslužitelja. SO Optimizacija poslužiteljske infrastrukture. glavni parametri tehničke optimizacije

Nedavno sam primio zahtjev za pomoć u postavljanju namjenskog poslužitelja za pokretanje internetske trgovine na 1C-Bitrixu. Razlog zahtjeva je spor rad stranice.
Pogledali smo stranicu - doista, neke stranice se učitavaju više od minute!!! Prvo što mi je palo na pamet kada smo pogledali stranicu bile su neoptimalne performanse komponenti koje je razvio drugi programer. Ali ne u istom iznosu...

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

Pa, pokušajmo nekako popraviti situaciju...
Dopustite mi da odmah napomenem da ovaj članak nije uputa za rad s modulom, već samo stvarni slučaj korištenja modula. Možda će nekome biti od koristi.

Nakon revizije utvrđeni su sljedeći glavni problemi:
1. Morate instalirati PHP akcelerator na poslužitelj
2. Na stranici /price/ komponenta “nvisions:menu.sections” ima velikih problema - generira se zahtjev prema bazi podataka koji se obrađuje gotovo minutu - to je glavni razlog dugog vremena učitavanja stranice. , kao i veliko opterećenje poslužitelja.
3. Baza radi sporo (687 zahtjeva za pisanje u sekundi je vrlo malo), problem može biti u konfiguraciji poslužitelja. Trebate pretvoriti tablice u InnoDB i konfigurirati InnoDB
4. Datotečni sustav nije baš brz, to može biti zbog hardverskih značajki poslužitelja (na primjer RAID), ali u načelu bi stranica trebala dobro raditi pri ovoj brzini
5. Postoji problem u predlošku stranice (postoje nepostojeće poveznice), potrebno ga je ukloniti - potrebno je puno resursa.
6. Potrebno je konfigurirati dvorazinsku arhitekturu na poslužitelju (servirati statički sadržaj preko nginxa), to će značajno smanjiti opterećenje Apache poslužitelja, stabilizirati potrošnju memorije tijekom učitavanja, a time i ubrzati rad i povećati pouzdanost projekt u cjelini.

Analizirajmo informacije iz modula performansi 1C-Bitrix:

Slika jasno pokazuje probleme s poslužiteljem baze podataka, najvjerojatnije postavke nisu optimalne, jer namjenski poslužitelj.
Broj operacija datoteka također je sumnjivo nizak.


Očiti problemi s kodom ili komponentama na stranici /price/index.php
Sumnjivo dugo vrijeme generiranja za /bitrix/urlrewrite.php – pogledajte dalje:

Da, ovo je izvor problema: predložak sadrži vezu na nepostojeću sliku, to generira pogrešku 404 i prisiljava Apache da obradi ovu pogrešku i generira potpunu stranicu.

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


A evo i problematičnih komponenti na stranici:


Komponenta izbornika ima onemogućeno predmemoriju.
Sažetak stranice:

Pa, evo kratke analize. Koliko vam zgodan modul izvedbe govori "gdje su problemi". Počnimo s rješavanjem problema:

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


Urlrewrite.php sada se ne poziva pri svakom pogotku



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

Idemo dalje:
Instaliranje eacceleratora. Neću ovdje opisivati ​​kako se akcelerator postavlja 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: Optimiziranje baze podataka(prijenos u InnoDB i optimizacija postavki)


Kao što se može vidjeti iz testa modula izvedbe, brzina baze podataka značajno je porasla
Općenito, ukupna izvedba nakon optimizacije baze podataka ostala je nepromijenjena, vjerojatno zbog sporog rada datotečnog sustava.

AŽURIRAJ:
Preporuke modula izvedbe.
Slijedeći preporuke modula, onemogućujemo parametar "open_basedir", jer poslužitelj je posvećen samo našem projektu, mislimo da sigurnost u cjelini neće biti ugrožena.

Proizlaziti:


Rezultat je, kako kažu, DOSTUPAN

Ostaje samo prepisati "krive" komponente i projekt će letjeti.

Također smo instalirali i konfigurirali nginx kao proxy poslužitelj za Apache. Ne stavljam slike jer... brojke su ostale gotovo nepromijenjene. No, prema subjektivnoj procjeni, stranice se sada učitavaju nekoliko puta brže.

Generiranje predloška i dalje traje dosta dugo (vrijeme generiranja gotovo je isto kao kod jezgre sustava) - očito prethodni programer nije optimalno napisao kod. Nema vremena, nema budžeta, nema želje da se analizira tuđi kod. Lakše je, brže i jeftinije napisati svoj kod od nule.

Općenito: Modul izvedbe je vrlo koristan i praktičan alat za otklanjanje pogrešaka u radu projekta i poslužitelja. Za to, hvala njegovim programerima.

p.s. Osobno imam malo iskustva u radu s Linuxom. Prvi put sam se pobliže upoznao s FreeBSD-om. Iznenadilo me da su nakon instaliranja nekog softvera konfiguracijske datoteke potpuno prazne (na primjer, MySQL). Bio sam zadovoljan lakoćom instaliranja softvera iz "portova".

“, smjer „Sustavi prijenosa podataka“.

Prije nego što uđemo u tehničke zamršenosti WAN optimizacije, shvatimo što je to i za što je namijenjeno.

Nedavno je postala evidentna migracija IT struktura na decentralizirani računalni model, u kojem tvrtke distribuiraju svoje procesne centre diljem svijeta. Kao rezultat toga, količina podataka i broj IT resursa pohranjenih izvan korporativnih podatkovnih centara (DC) se povećao, a voditelji odjela sada traže načine za konsolidaciju svoje IT infrastrukture. Poduzeća su shvatila prednosti koje donosi konsolidacija u smislu smanjenja složenosti infrastrukture, smanjenja troškova, poboljšanja korištenja resursa i zaštite podataka.

Centraliziranje resursa i podataka pokazuje gore opisane prednosti, ali postoje razne zamke koje bi organizacije koje planiraju optimizirati svoju IT infrastrukturu trebale imati na umu. Jedan od problema s kojim će se susresti je sporiji rad aplikacija. Popularnost modela distribuiranog računalstva uvelike je potaknuta potrebom da se IT resursi drže što je moguće bliže korisnicima distribuirane mreže kako bi se osigurala maksimalna izvedba. Konsolidacija poslužitelja na središnjoj lokaciji preokreće obrazac raspodjele resursa i stoga degradira performanse mnogih aplikacija.

Kako bi riješile problem, organizacije proširuju kapacitet WAN veza u pokušaju smanjenja vremena odziva. Tada otkrivaju da širenje kanala praktički nema (ili ima minimalan) utjecaj na brzinu aplikacija, budući da je problem u velikom kašnjenju prijenosa podataka preko kanala i korištenju protokola koji su neučinkoviti za rad s WAN-om. Osim toga, širenje propusnosti izvan Moskve općenito možda neće biti isplativo. I upravo za takve zadatke koristi se oprema za optimizaciju WAN kanala.

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

    smanjiti troškove propusnosti komunikacijskog kanala. Zapravo, organizacije će moći bez kupnje dodatne širine pojasa, što je ključni uvjet za mnoge tvrtke kada započinju projekte implementacije WAN optimizatora;

    konsolidirati infrastrukturu u podatkovnom centru. Kompanije će moći ukloniti značajan dio IT infrastrukture (datotečne i mail poslužitelje, softverske distribucijske poslužitelje, SharePoint portale, pogone trake, itd.) iz udaljenih ureda bez gubitka performansi i upravljivosti;

    pojednostaviti infrastrukturu udaljenog ureda. Neki proizvođači nude softversku platformu u svojim uređajima koja korisnicima omogućuje smještaj nekih usluga preostalih nakon konsolidacije podatkovnog centra (na primjer, ispisni poslužitelj, DHCP poslužitelj, datotečne usluge) izravno na uređaju za optimizaciju. To omogućuje dodatno smanjenje operativnih troškova.

Što je WAN optimizacija? Rješenje za optimizaciju rada mrežnih aplikacija koristi klijent-poslužitelj arhitekturu i princip sesije mrežnih aplikacija. Njegov glavni zadatak je optimizirati sesije aplikacije. U biti, radi se o skupu uređaja za poboljšanje performansi aplikacija instaliranih u centru iu svakom regionalnom (lokalnom) uredu tvrtke. Oni propuštaju sav promet kroz sebe, "presrećući" i optimizirajući radne sesije aplikacije.

Postoji niz 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 proizvodom SteelHead), Cisco (proizvod WAAS), Juniper (proizvod WXC) i BlueCoat (proizvod ProxySG).

Proces optimizacije opreme koju nude temelji se na približno istim mehanizmima koji uključuju kompresiju podataka, predmemoriju, optimizaciju TCP protokola i optimizaciju operativne logike samih poslovnih aplikacija.

Svi mehanizmi optimizacije aplikacija koji se razmatraju koriste segmentaciju sesije, dijeleći je između klijenta i poslužitelja u 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 (poslužitelja). U prvom i trećem segmentu sesija se odvija preko LAN-a, a nedostaci u TCP protokolu ne utječu na kašnjenje aplikacije. Drugi segment je optimiziran podešavanjem TCP brzine. Kao rezultat toga, osigurani su potrebni minimumi: u smislu kašnjenja pri prijenosu prometa preko WAN-a i vremena odgovora aplikacije. Pogledajmo mehanizme koji su, u ovom ili onom obliku, temelj odluka svakog proizvođača optimizatora.

Mehanizmi kompresije sposobni su ubrzati prijenos podataka povećanjem informacijskog sadržaja prijenosa informacija po jedinici vremena. Najčešće se podaci koji se prenose mrežom prikazuju u neoptimalnom formatu i nerazumno su velikog volumena. Sada, uz aktivnu upotrebu u razvoju aplikacija, na primjer, XML-a ili drugih jezika za predstavljanje informacija u tekstualnom obliku, nema potrebe brinuti o prikazu podataka. To povećava brzinu i jednostavnost razvoja, ali u isto vrijeme dovodi do suštinski nestrukturiranih podataka koji se prenose preko mreže, uvodeći velike količine redundancije u promet.

Sažimanje prometa uklanja ovaj nedostatak. Motori za optimizaciju aplikacija koriste algoritam za kompresiju podataka bez gubitaka (kao što je Lempel-Ziv) i algoritam za uklanjanje duplikata blokova. Kombinacija ova dva algoritma omogućuje nam postizanje najvišeg stupnja kompresije informacija bez gubitaka, čime se osigurava brzi prijenos informacija čak i preko kanala relativno niske brzine.

Funkcionalnost kompresije, u ovom ili onom obliku, nalazi se u gotovo svakom modernom usmjerivaču i, zapravo, ovo je mjesto gdje su moderni optimizatori započeli svoje putovanje. Vrlo često mrežni administratori vjeruju da je to zloglasna optimizacija, uvjeravajući svoje upravitelje da nema potrebe za kupnjom posebnih uređaja. I tu griješe, kao što ćemo kasnije vidjeti.

Mehanizmi predmemoriranja također pomažu u smanjenju količine prenesenog prometa. U distribuiranoj mreži često se javljaju situacije kada svi zaposlenici tvrtke trebaju prenijeti iste podatke. Na primjer, prilikom ažuriranja softverskih proizvoda ili baza podataka antivirusnog softvera, prijenosa zahtjeva uprave tvrtke, multimedijskih datoteka i programa za obuku, javnih biblioteka dokumenata. Korištenje uređaja za optimizaciju omogućuje da se ove informacije pohrane u predmemoriju, to jest da se jednom prenesu putem WAN-a, a potom daju svakom korisniku lokalno (s tvrdog diska najbližeg uređaja za optimizaciju), a ne iz udaljenog globalnog izvora.

Važna razlika u odnosu na konvencionalne uređaje za predmemoriju je činjenica da optimizatori rastavljaju informacije u dijelove/blokove i spremaju ih na tvrdi disk. Ovo je zanimljivo s gledišta da ako promijenimo neke podatke u novoprenesenoj datoteci (primjerice, ubacimo slajd ili sliku u dokument), tada će se prenijeti promjena, a ne cijela datoteka . Mehanizmi za dinamičko dijeljenje prenesenih informacija u blokove i praćenje promjena su vlasnički i ne podliježu otkrivanju. Ako govorimo o značajkama rada, proizvođači koriste 2 pristupa. Posebnost prvog od njih je njegovo ujedinjenje, tj. prilikom prijenosa jedne datoteke u različite ogranke, samo će jedna kopija datoteke biti spremljena u središnjem optimizatoru za sve udaljene uređaje za optimizaciju. U drugom slučaju, prostor na tvrdom disku se dinamički dijeli proporcionalno broju udaljenih ureda (daljinski optimizatori), a ako se jedna datoteka prenese u sve podružnice, slična kopija će se odraziti na svaki segment tvrdog diska koji je "odgovoran" za svoju granu.

Očito, mehanizam predmemoriranja radi u tandemu s mehanizmom kompresije. Zahvaljujući ova dva mehanizma proizvođači optimizatora prikazuju prekrasne grafikone gdje razina optimizacije može doseći 150-200X. Uspjeli smo dobiti iste podatke prilikom višestrukog slanja iste velike podatkovne datoteke jer je nakon prvog prijenosa pohranjena u predmemoriju uređaja, a zatim su preneseni samo kilobajti poveznica koje upućuju na lokaciju datoteke na tvrdom disku. Ovdje se odmah postavlja logično pitanje: koliki je kapacitet tvrdog diska i je li moguće spojiti vanjsku pohranu na optimizatore? Neki proizvođači svojedobno su spominjali mogućnost pojave ovakve opreme (ali ona će već biti namijenjena isključivo za ugradnju u podatkovni centar).

TCP optimizacijski mehanizmi rad na transportnoj razini. Ovo je glavno “bojno polje” proizvođača optimizatora prije nego što su se počeli “penjati” na više razine (aplikacije). TCP transportni protokol razvijen je 1980. godine i danas nije doživio veće promjene, dok su se tehnologije prijenosa podataka značajno promijenile. Kada se paketi izgube, standardni TCP protokol oštro smanjuje brzinu - gotovo za polovicu, a njezino povećanje od ove razine naknadno se događa linearno iu malim koracima. Stoga čak i relativno mala razina gubitka paketa (2-3% gubitaka smatra se normalnim) dovodi do čestih i naglih gubitaka u brzini mreže.

Optimizirani TCP protokol, kada dođe do gubitka, smanjuje brzinu ne 2 puta, već samo nekoliko postotaka, a kod gubitka jednog paketa brzina se vrlo malo smanjuje. Ispada da rješenje za optimizaciju rada mrežnih aplikacija prvenstveno povećava brzinu prijenosa informacija. Maksimalno iskorištenje cijele propusnosti kanala za prijenos podataka osigurano je poboljšanim postupkom rada TCP protokola.

Mehanizmi optimizacije na razini aplikacije nude ubrzanje samih poslovnih aplikacija putem WAN kanala. Implementacija nekih protokola u popularnim proizvodima je, nažalost, daleko od savršene. Konkretno, protokol CIFS (Common Internet File System), koji se aktivno koristi u Microsoftovim mrežama, stvara pretjeranu količinu servisnih poruka (potvrda isporuke, spremnost uređaja itd.). U lokalnoj mreži ti ekscesi ne unose značajno kašnjenje u vrijeme odziva, ali u distribuiranoj mreži postaju značajni. Optimizacijski uređaji sposobni su većinu nevažnih poruka obraditi lokalno, bez prijenosa preko WAN-a, čime se smanjuje količina prometa i smanjuje vrijeme odziva niza funkcija mrežnih aplikacija, poput mrežnog ispisa, pristupa datotečnim servisima itd. Zapravo, danas se proizvođači natječu upravo na tom području. Najčešće optimizirani protokoli uključuju CIFS, NFS, MAPI, Video, HTTP, SSL i Windows ispis. Ovaj "džentlmenski set" prisutan je u portfelju gotovo svakog proizvođača, ali su optimizirani na različite načine.

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

Nije teško pogoditi da svi optimizatori rade s aplikacijama temeljenim na TCP-u, što znači da ostatak prometa prolazi bez optimizacije. Isto se može reći i za šifrirani promet (možda je izuzetak SSL - mnogi optimizatori mogu "prekinuti" sesiju, optimizirati promet i šifrirati ga natrag).

Tvrtke s distribuiranom strukturom koje žele smanjiti troškove telekom operaterima mogle bi biti zainteresirane za ovakvo rješenje. To se može očitovati iu slučaju korištenja tarifa po megabajtu (učinak je očit) iu slučaju neograničenih (prelazak na tarifne planove niže brzine). Danas je to možda najzanimljivija svrha korištenja takvih uređaja. Ostali bonusi, ne tako očiti i transparentni, mogu biti: konsolidacija poslužitelja, smanjenje broja IT osoblja u udaljenim uredima, povećana produktivnost zbog povećane brzine aplikacije.

U borbi za interes za optimizatore, proizvođači također nude mogućnosti optimizacije rada mobilnih zaposlenika instaliranjem specijaliziranog softvera na prijenosna računala i mogućnošću instaliranja virtualnih poslužitelja temeljenih na jednom optimizatoru u udaljenom uredu. Softver za prijenosna računala je kodom sličan softveru na samim optimizatorima, tj. Laptop postaje poput optimizatora.

Osim tvrtkama s distribuiranom strukturom, ovo rješenje može biti zanimljivo i operaterima koji tvrtkama mogu pružiti usluge optimizacije (primjerice, iznajmljivanje). Takve usluge postaju popularne u Europi.

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

Juniperovo WXC rješenje se razlikuje po tome što je sav promet pakiran u UDP tunel, tj. optimizacija se odvija u cijelom prometu. Ovaj pristup svakako ima svoje prednosti. Uključio bih prilično visoku vrijednost optimizacije "bolničkog prosjeka" za sav promet (na temelju 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 predmemoriranja, optimizacija aplikacije), ali visoka cijena rješenja još uvijek sprječava rast njegove popularnosti.

Rezimirajući sve gore navedeno, želio bih napomenuti da je WAN optimizacija zanimljivo rješenje, prilično transparentno za poslovanje, ali, nažalost, još uvijek nije dobilo veliku potražnju u ruskim tvrtkama. Na temelju implementacija bilo je moguće smanjiti promet u prosjeku 2-3,5 puta i značajno ubrzati odgovore aplikacija. Na primjer, jedan naš korisnik, na satelitskim linijama, uštedio je oko 20 sati odgovora tijekom mjesec dana testiranja. Za našu tvrtku, implementacija ovog rješenja omogućila nam je dvostruku uštedu pri plaćanju mrežnog prometa, kao i povećanje brzine korporativnih aplikacija za prosječno 1,7 puta. Istodobno, povrat ulaganja u projekt bio je samo 3 mjeseca.

U svakom slučaju, ako ste zainteresirani, najbolje je prvo testirati rješenje oko mjesec dana, a tek na temelju rezultata takvog testiranja moći će se reći koliko je implementacija optimizatora učinkovita u odnosu na konkretnu mrežu. Najbolje je uključiti iskusne sistemske integratore da razviju rješenje, provedu testiranje i instalaciju.

Učinkovit SEO može biti ometen samo jednom dosadnom greškom u tehničkoj optimizaciji web mjesta, ali to će dovesti do činjenice da roboti tražilice neće moći ispravno indeksirati resurs, razumjeti strukturu web mjesta, a korisnici će ne pronađu informacije koje su im potrebne. Sve će to zauzvrat dovesti do niskog rangiranja stranice.

Tehnička optimizacija web stranica je skup mjera koje su usmjerene na prilagodbu tehničkih aspekata resursa kako bi se poboljšala njegova interakcija s robotima tražilice. Tehnička optimizacija omogućuje najbrže i najpotpunije indeksiranje stranica web mjesta.

5 glavnih parametara tehničke optimizacije

1. Robots.txt datoteka

Važno je napomenuti da se datoteka robots.txt mora nalaziti 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 za sve robote tražilice odjednom, kao i za robote svake tražilice zasebno. Možete saznati više o sastavljanju ove datoteke i njezinom postavljanju na web stranici za pomoć webmasterima Yandexa.

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

2. Sitemap - karta stranice

Karta stranice jedna je od stranica s resursima, čije su informacije slične sadržaju obične knjige. Ova se stranica koristi kao navigacijski element. Mapa stranice sadrži potpuni popis odjeljaka i/ili svih stranica objavljenih na resursu.

HTML karta stranice potrebna je korisnicima za brzo i jednostavno pronalaženje informacija, a XML je potreban tražilicama za poboljšanje indeksiranja stranica.

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. Mnogo je primjera zašto su potrebna preusmjeravanja:

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

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

Glavni statusni kodovi preusmjeravanja:

  • 300 - Višestruki izbor (nekoliko opcija za odabir);
  • 301 - Moved Permanently (preselio zauvijek);
  • 302 - Privremeno preusmjeravanje;
  • 303 - Vidi Ostalo (traženi izvor se može pronaći na drugoj adresi);
  • 304 - Nije izmijenjeno (sadržaj nije promijenjen - to mogu biti slike, listovi stilova itd.);
  • 305 - Koristi proxy (pristup mora biti preko proxyja);
  • 306 - Nekorišteno (nije u uporabi).

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

4. Prilagodba prikaza URL stranice

Važno je provjeriti web mjesto kako biste bili sigurni da su adrese svih njegovih stranica dosljedne. Na primjer, na cijelom web-mjestu 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/, to nije točno.

Bit će zgodno provjeriti adrese internih stranica resursa za pogreške nakon izrade karte web mjesta.

5. Greške na stranici

Kada se učita bilo koja stranica na web-mjestu, šalje se zahtjev poslužitelju, 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 - poslužitelj je privremeno nedostupan.

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

Ako stranica postoji, a poslužitelj obavijesti o pogrešci 404 kada je zatraži, tada stranica neće biti indeksirana od strane tražilica. U suprotnom, velik broj stranica s istim tekstom može završiti u indeksu, što izrazito negativno utječe na rangiranje.

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

Razmotrili smo samo glavne parametre tehničkog poboljšanja stranice, na koje prvo morate obratiti pozornost. Ako pronađete takve greške na svojoj web stranici ili imate poteškoća s njihovim uklanjanjem, kontaktirajte samo profesionalnu SEO tvrtku.

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

Optimizacija operativnog sustava (FreeBSD)

  • Prijelaz na 7.x je koristan za višejezgrene sustave jer se mogu koristiti novi ULE 3.0 Scheduler i jemalloc. Ako koristite naslijeđeni 6.x sustav i on se ne može nositi s opterećenjem, vrijeme je da prijeđete na 7.x.
  • Prijelaz na 7.2će vam omogućiti da povećate KVA, optimizirate zadani sysctl i koristite superstranice. Novi FreeBSD 8.0 već je u pripremi, što će značajno povećati produktivnost.
  • Prijelaz na amd64 omogućuje povećanje volumena KVA i Shared Mem na više od 2 Gb. Potrebno je stvoriti uvjete za razvoj poslužitelja jer se baze podataka stalno povećavaju i zahtijevaju veće veličine.
  • Rasterećenje mrežnog podsustava u FreeBSD pomoći će optimizirati poslužitelj. Ovaj se proces može obaviti u dvije faze: podešavanje ifconfig parametara i sysctl.conf/loader.conf postavki. 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; oni se često koriste za procese s više jezgri. Za trećerazrednu mrežnu karticu polling je najbolje rješenje. Najnovija ažurirana verzija podešavanja FreeBSD 7 pomoći će u rješavanju problema.
  • FreeBSD i ogroman broj datoteka rade odlično zahvaljujući predmemoriranju naziva datoteka u direktoriju. Pretraživanje hash tablice pomoći će vam da brzo pronađete traženu datoteku. Iako je maksimalna količina memorije oko 2 MB, možete je povećati sve dok vfs.ufs.dirhash_mem to dopušta.
  • Soft ažuriranja, gjournalImontirati opcije- Riječ je o novim terabajtnim vijcima koji imaju izvrsne performanse. Ako nestane struje, njihov fsck će trajati jako dugo, tako da možete koristiti softupdates ili se prijaviti preko gjournala.

Optimizacija sučelja (nginx)

Ova se vrsta može klasificirati kao preuranjena optimizacija, iako će pomoći u povećanju ukupnog vremena odgovora stranice. Među standardnim optimizacijama vrijedi obratiti pozornost na reset_timeout_connection; sendfile; tcp_nopush i tcp_nodelay.

  • Prihvati filtre je tehnologija koja omogućuje prijenos informacija iz kernela u proces u slučaju pristizanja novih podataka ili primanja valjanog http zahtjeva. Ovi filtri pomoći će rasteretiti poslužitelj kada postoji ogroman broj veza.
  • Predmemoriranje nginx karakterizira fleksibilnost, a proizvodi se iz fastcgi ili proxy pozadine. Svatko može pametno koristiti predmemoriju u svom projektu.
  • AIO je vrlo koristan za neka specifična opterećenja poslužitelja, jer štedi vrijeme odgovora, a smanjuje broj radnika. Nove verzije nginxa omogućuju korištenje aio-a u tandemu s sendfileom.

Pozadinska optimizacija

  • Oklopni transporter je okvir koji vam omogućuje smanjenje opterećenja predmemoriranjem kompajliranog koda u OP-u. APC zaključavanje vrijedi ažurirati jer može usporiti i mnogi ljudi počinju koristiti eAccelerator umjesto APC-a. Vrijedno je zamijeniti zaključavanje spinlockom ili pthread mutexom. Vrijednost APC savjeta treba povećati ako postoji veliki broj .php datoteka ili ako se često spremaju u APC korisničku predmemoriju. Fragmentacija APC-a je znak da APC koristite neprikladno. Ne može samostalno brisati zapise pomoću TTL ili LRU.
  • PHP 5.3 pomoći će u povećanju produktivnosti, stoga se isplati nadograditi svoju PHP verziju, iako bi popis zastarjelih funkcija mnoge mogao uplašiti.

Optimizacija baze podataka

Ideja za poboljšanje performansi MySQL-a na Internetu ima puno jer se svaki web projekt prije ili kasnije susreće 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 profile (dtrace, systemtap i oprofile), kao i korištenje velikog broja dodatnog softvera. Potrebno je ne samo savršeno znati koristiti indekse, sortirati ih i grupirati, već i znati kako sve to funkcionira unutar MySQL-a. Također morate znati prednosti i nedostatke različitih mehanizama za pohranu podataka, razumjeti predmemoriju upita i OBJASNITI.

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

  • Prijelaz na 5.1 pruža mnoge prednosti, među kojima vrijedi istaknuti optimizaciju optimizatora, particioniranje, InnoDB dodatak i replikaciju baziranu na redovima. Kako bi se stranica ubrzala, neki ljubitelji ekstremnih sportova već testiraju verziju 5.4.
  • Prelazak na InnoDB pruža mnoge prednosti. Sukladan je s ACID-om, tako da se svaka operacija izvodi samo jednom transakcijom. Ima zaključavanje na razini retka, što omogućuje istovremeno čitanje i pisanje mnogih niti koje su međusobno izolirane.
  • Ugrađeni MySQL cache – Query Cache je prilično teško razumjeti, pa ga mnogi korisnici koriste neracionalno ili ga isključuju. Za njega više ne znači bolje, pa se ne isplati maksimizirati ovaj podsustav. Predmemorija upita paralelizirana je; kao rezultat toga, ako se koristi više od osam procesa, to će samo usporiti cijeli proces, a ne pomoći u smanjenju vremena učitavanja stranice. Sadržaj ovog podsustava, koji se odnosi na određenu tablicu, poništava se kada se naprave promjene u toj tablici. To znači da Query Cache daje pozitivne rezultate samo kada se koriste dobro dizajnirane tablice.
  • Indeksi mogu biti štetni i za SELECT (ako ih nema) i za INSERT/UPDATE (ako postoje dodatni). Indeks koji se više ne koristi i dalje zauzima memoriju i time usporava promjene podataka. Da biste riješili ovaj problem, trebali biste koristiti jednostavan SQL upit.

PostgreSQL

Sustav Postgres je prilično svestran, jer pripada Enterprise klasi i Skype na njemu radi odlično, a istovremeno se može instalirati čak i na mobitel. Među 200 dostupnih parametara, njih 45 su osnovni i odgovorni su za podešavanje.

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

  • Indeksi PostgreSQL je uvijek na prvom mjestu, dok su u MySQL-u uvijek na zadnjim pozicijama, 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 bi se trebao koristiti, kao što su GiST, GIN, hash i B-stablo, kao i djelomični izrazi, izrazi s više stupaca i on.
  • pgIzbacivač a njegove alternative prvo se moraju instalirati na poslužitelj baze podataka. Bez skupljača veze, svaki zahtjev stvara zaseban proces koji koristi RAM. Čini se kao ništa loše, ali kada se stvori više od 200 veza, čak i vrlo moćan poslužitelj ima poteškoća s obradom informacija. pgBouncer pomaže riješiti ovaj problem.
  • pgFouine je nezamjenjiv program, jer se sa sigurnošću može nazvati analogom mysqlsla u php-u. U tandemu s Playrom, može izvršiti optimizaciju upita u teškim uvjetima na probnim poslužiteljima.

Istovar baze podataka

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

  • SphinxQL može se koristiti kao MySQL poslužitelj. Da biste to učinili, trebate samo kreirati sphinx.conf, kao i unose za indekser u cron-u i prebaciti se na drugu bazu podataka. Ovim radnjama nema potrebe čak ni mijenjati kod. Prelazak na SphinxQL pomoći će poboljšati brzinu i kvalitetu pretraživanja i zaboraviti na MyISAM i FTS.
  • Ne-RDBMS pohrana omogućuje vam da ne koristite relacijsku bazu podataka. Možete odabrati Hive ili Oracle. Baza podataka ključ-vrijednost zbog svoje brzine koristi odabire iz relacijskih baza podataka za daljnje predmemoriranje. Vlasnici velikih PHP projekata mogu koristiti izvrsnu značajku predmemorije opcodea za pohranu svih prilagođenih podataka. Uz njegovu pomoć možete pouzdano spremiti čak i promjene globalnog značaja, jer zauzimaju malo prostora i praktički ne zauzimaju memoriju, a brzina uzorkovanja također se može značajno povećati. Ako se za veliki projekt blok globalnih promjena napiše samo na jednom stroju, tada se promet povećava i počinje jako usporavati. Da biste riješili ovaj problem, trebate pohraniti globalne varijable u predmemoriju opcodea ili klonirati varijable na svim poslužiteljima i dodati iznimke algoritmu za raspršivanje dosljednosti.
  • Kodiranja odnose se na učinkovite metode za istovar baze podataka. Vrijedno je napomenuti da je UTF-8 izvrstan izbor, ali na ruskom zauzima puno prostora, pa za jednojezični kontingent prvo trebate razmisliti o racionalnoj upotrebi kodiranja.
  • Asinkronija će pomoći smanjiti vrijeme odgovora aplikacije ili web stranice, kao i značajno smanjiti opterećenje samog poslužitelja. Skupni zahtjevi izrađuju se mnogo brže od uobičajenih pojedinačnih. 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 stvoriti pouzdanu zaštitu poslužitelja od napada robota.
  • Xtrabackup iz Percone izvrstan je MySQL alat za sigurnosno kopiranje koji ima mnogo postavki. No, idealno rješenje je ipak pozivanje klonova u ZFS-u jer se vrlo brzo kreiraju, a za vraćanje baze podataka dovoljno je promijeniti putanje do datoteka u konfiguraciji mišića. Klonovi vam omogućuju vraćanje sustava od nule.
  • Prijenos pošte na drugi hostće uštedjeti promet i IOP-ove ako je vaš poslužitelj jednostavno bombardiran spamom.
  • Integracija sa softverom treće strane pomoći će optimizirati mysql poslužitelj. Na primjer, možete koristiti smtp/imap vezu za razmjenu poruka, što neće zauzeti puno memorije. Za kreiranje chata dovoljno je koristiti bazu jabber poslužitelja s javascript klijentom. Ovi sustavi, koji se temelje na adapterima za gotove proizvode, vrlo su skalabilni.
  • Monitoring je vrlo važna komponenta, jer je nemoguće bilo što optimizirati bez detaljne analize. Potrebno je pratiti metriku performansi, besplatne resurse i kašnjenja; Zabbix, Cacti, Nagios i drugi alati pomoći će u tome. Web Performance Test omogućuje izračunavanje brzine učitavanja web stranice ili projekta, tako da je od velike pomoći u praćenju. Prilikom postavljanja poslužitelja performansi imajte na umu da će samo temeljita analiza pomoći u otklanjanju svih problema i izvršiti optimizaciju.

Ako niste razumjeli pola napisanog, nema veze.