Virtualization ng server - ang mga system para sa pag-optimize ng gastos ay bumibili ng anumang pagpili ng configuration ng mga parameter at pagpili ng gastos sa pamamagitan ng presyo at pagkalkula. Pag-optimize ng pagganap ng kagamitan Mga teknikal na solusyon sa pag-optimize para sa mga server

Kamakailan, isang kahilingan ang natanggap para sa tulong sa pag-set up ng isang dedikadong server para sa pagpapatakbo ng isang online na tindahan sa 1C-Bitrix. Ang dahilan ng apela ay ang mabagal na operasyon ng site.
Tiningnan namin ang site - sa katunayan, ang ilang mga pahina ay na-load nang higit sa isang minuto !!!. Ang unang bagay na naisip sa pagtingin sa site ay ang suboptimal na operasyon ng mga bahagi na binuo ng isa pang developer. Pero hindi gaano..

Paunang data: Server sa Xeon - 2 GB ng memorya, RAID. OS - FreeBSD. BUS - Negosyo.

Well, subukan nating ayusin ang sitwasyon ...
Magpapareserba ako kaagad na ang artikulong ito ay hindi isang tagubilin para sa pagtatrabaho sa module, isang tunay na kaso mula sa buhay ng paggamit ng module. Marahil ay may magiging kapaki-pakinabang.

Pagkatapos ng pag-audit, natukoy ang mga sumusunod na pangunahing problema:
1. Kailangan mong mag-install ng PHP accelerator sa server
2. Sa pahinang /price/, ang bahagi ng “nvisions:menu.sections” ay may malalaking problema - isang kahilingan sa database ay nabuo at naproseso nang halos isang minuto - ito ang pangunahing dahilan ng mahabang paglo-load ng pahina, pati na rin ang isang mabigat na pagkarga sa server.
3. Ang database ay tumatakbo nang mabagal (687 write requests per second ay napakaliit), ang problema ay maaaring nasa configuration ng server. Kailangang i-convert ang mga talahanayan sa InnoDB at i-configure ang InnoDB
4. Ang file system ay hindi masyadong mabilis, maaaring ito ay ang mga tampok ng hardware ng server (halimbawa, RAID), ngunit sa prinsipyo, ang site ay dapat gumana nang maayos sa ganoong bilis
5. Dapat alisin ang problema sa template ng site (may mga hindi umiiral na link (a)) - nangangailangan ito ng maraming mapagkukunan.
6. Kinakailangang mag-set up ng two-tier architecture sa server (maghatid ng static na content sa pamamagitan ng nginx), ito ay makabuluhang bawasan ang load sa Apache server, patatagin ang pagkonsumo ng memory sa mga load, at samakatuwid ay mapabilis ang trabaho at mapataas ang pagiging maaasahan ng proyekto sa kabuuan.

Suriin natin ang impormasyon ng 1C-Bitrix performance module:

Ang figure ay malinaw na nagpapakita ng mga problema sa database server, malamang na hindi pinakamainam na mga setting, dahil. nakalaang server.
Gayundin kahina-hinalang mababang bilang ng mga pagpapatakbo ng file.


Malinaw na mga problema sa code o mga bahagi sa /price/index.php page
Kahina-hinalang mahabang oras ng pagbuo ng /bitrix/urlrewrite.php - tumingin pa:

Oo, iyon ang pinagmulan ng problema: ang template ay naglalaman ng isang link sa isang hindi umiiral na imahe, ito ay bumubuo ng isang 404 na error, at pinipilit ang Apache na iproseso ang error na ito at bumuo ng isang buong pahina.

Ang parehong isyu ay nakakaapekto sa lahat ng mga pahina ng site na nauugnay sa may problemang template:


At narito ang mga may problemang bahagi sa pahina:


Ang bahagi ng menu ay hindi pinagana ang pag-cache.
Buod ng pahina:

Well, narito ang isang maikling pagsusuri. Gaano kadaling sabihin sa iyo ng module ng pagganap "kung nasaan ang mga problema." Simulan natin ang pag-troubleshoot:

Nagdagdag sila ng isang larawan kung saan mayroong isang link, nagdagdag sila ng isang larawan, at hindi nag-alis ng mga link, dahil mayroong maraming mga link, kabilang ang mga bahagi ng third-party. Gayundin sa page na ito, ang problemang third-party na bahagi (nsvision:menu.sections) ay hindi pinagana. hindi malinaw ang layunin nito. (pagkatapos ng shutdown, walang nagbago sa labas)
Resulta:


Ang Urlrewrite.php ay hindi na tinatawag sa bawat hit



Tulad ng nakikita mo, ang bilis ng trabaho ay tumaas ng 2 beses (!).

Pumunta pa tayo:
Mag-install ng eccelerator. Dito hindi ko inilalarawan kung paano naka-install ang accelerator, dahil. ang impormasyong ito, kung kinakailangan, ay palaging matatagpuan sa Internet.







Resulta pagkatapos i-install ang eAccelerator: Isa pang dalawang beses na pagtaas sa pagganap.

Pumunta pa tayo: Pag-optimize ng database(ilipat sa InnoDB at i-optimize ang mga setting)


Tulad ng makikita mo mula sa pagsubok ng module ng pagganap, ang bilis ng database ay tumaas nang malaki
Sa pangkalahatan, ang pangkalahatang pagganap pagkatapos ng pag-optimize ng database ay nanatiling hindi nagbabago, posibleng dahil sa mabagal na trabaho file system.

I-UPDATE:
Mga Rekomendasyon sa Module ng Pagganap.
Pakikinig sa mga rekomendasyon ng module, huwag paganahin ang parameter na "open_basedir", dahil ang server ay inilalaan lamang para sa aming proyekto, ibig sabihin namin na ang seguridad sa pangkalahatan ay hindi malalabag.

Resulta:


Ang resulta, tulad ng sinasabi nila, ay AVAILABLE

Ito ay nananatiling muling isulat ang mga "baluktot" na bahagi at ang proyekto ay lilipad.

Naka-install at na-configure din ang nginx bilang proxy server para sa Apache. Hindi ako nagbibigay ng mga larawan, dahil Ang mga numero ay hindi masyadong nagbago. Ngunit ayon sa subjective na pagtatasa, ang mga pahina ay nagsimulang mag-load nang ilang beses nang mas mabilis.

Ang template ay nabuo pa rin sa loob ng mahabang panahon (ang oras ng henerasyon ay halos kapareho ng sa core ng system) - tila, ang code ay hindi mahusay na isinulat ng nakaraang developer. Upang i-disassemble ang code ng ibang tao, walang oras, o badyet, o pagnanais. Mas madali, mas mabilis at mas mura ang pagsulat ng iyong code mula sa simula.

Sa pangkalahatan: Ang Performance module ay isang napaka-kapaki-pakinabang at maginhawang tool para sa pag-debug sa gawain ng proyekto at ng server. Para sa kung saan salamat sa mga developer nito.

P.S. Sa personal, wala akong karanasan sa Linux. Sa FreeBSD ay malapit nang nakilala sa una. Nagulat ako na pagkatapos mag-install ng ilang software, ang mga config file ay karaniwang walang laman (halimbawa, MySQL). Ako ay nalulugod sa kadalian ng pag-install ng software mula sa "mga port".

Pag-optimize ng imprastraktura ng database at virtual na kapaligiran

Pagbutihin ang pagganap ng iyong kasalukuyang imprastraktura ng database at makakuha ng mga rekomendasyon para sa karagdagang pag-optimize gamit ang mga serbisyo sa cloud.

Ang proyekto ng Server Optimization ay may kaugnayan sa mga sumusunod na kaso:

  • kakulangan ng sentralisadong storage at data recovery system;
  • Mga isyu sa pagganap ng SQL server;
  • mga problema sa aplikasyon;
  • kakulangan ng isang sistema para sa pagtiyak ng fault tolerance ng data center;
  • pagtatasa ng kahandaan at pagiging posible ng paglipat ng imprastraktura ng IT sa mga ulap;
  • kakulangan ng isang karaniwang pag-unawa sa estado ng imprastraktura ng database at virtual na kapaligiran.
    Pamahalaan ang kapaligiran ng iyong server nang mas mahusay:
    Teknikal na pag-audit ng imprastraktura ng database ng SQL
    I-detect ang mga isyu sa configuration ng server Ang pagpino sa isang SQL server ay hindi isang madaling gawain, kahit na para sa isang database administrator na may sapat na karanasan. Magsasagawa kami ng kumpletong pagsusuri ng mga setting ng antas ng system, tulad ng mga default na setting ng memorya, partitioning, parallel session, caching, disk, setting Magreserba ng kopya at iba pa.

    Pag-optimize ng memorya at imbakan ng disk Ang pangunahing kadahilanan na nakakaapekto sa pagganap ng anumang modernong database ay ang I/O subsystem. Susuriin namin ang likas na katangian ng pag-load sa database at magbibigay ng mga rekomendasyon para sa pag-optimize ng imbakan at RAM sa mga tuntunin ng parehong bilis at pagiging maaasahan ng imbakan ng impormasyon.

    Pag-optimize ng Pagganap ng Database Ang bawat developer ng database ay may sariling mga rekomendasyon para sa pag-optimize ng pagganap ng isang server o cluster. Ang mga espesyalista ng aming kumpanya ay nagsagawa ng iba't ibang mga opsyon para sa pag-configure ng database para sa iba't ibang uri ng workload at maaaring mag-alok ng pinakamainam na mga setting ng pagganap. Palaging naka-back up ang mga rekomendasyong ito ng mga link sa dokumentasyon at pinakamahuhusay na kagawian ng vendor para sa pag-deploy ng software.

    Pagsusuri ng mga error log at pagtuklas ng mga kritikal na problema Ang mga error log ay ang pangunahing mapagkukunan ng impormasyon tungkol sa pagpapatakbo ng database at mga problema sa mga application na gumagamit ng database na ito. Ang aming mga espesyalista ay bumuo ng kanilang sariling mga tool para sa pagsusuri ng mga problema at paghahanap ng mga paraan upang maalis ang mga ito. Bilang isang patakaran, ang anumang proyekto ay kinakailangang naglalaman ng isang pagsusuri ng mga log ng server ng database, batay sa kung saan ibinibigay ang mga rekomendasyon para sa pag-optimize.

    Pag-optimize ng database(trigger, index, trace messages) Ang lahat ng mga modernong database ay nangongolekta ng impormasyon tungkol sa kanilang sariling pagganap sa anyo ng isang set ng mga hiwa ng data na nagbibigay-daan sa iyo upang matukoy kung gaano kahusay gumagana ang database sa disk subsystem, query cache, sapat na mga index sa mga talahanayan, atbp. Susuriin namin ang impormasyong ito at magbibigay ng mga rekomendasyon kung paano gumawa ng mga pagbabago sa mga setting.

    Pagbuo ng isang fault-tolerant na arkitektura Ang pagbuo ng isang base architecture na may 24x7 operation mode na may downtime na hindi hihigit sa 2 oras bawat taon ay nagsasangkot ng pagtaas sa bilang ng mga server, isang detalyadong pag-aaral ng bahagi ng software at ang pag-aalis ng isang punto ng pagkabigo. Tutulungan ka naming malutas ang problemang ito, at bilang karagdagan, makakatanggap ka ng isang patakaran para sa pag-back up at pagpapanumbalik ng parehong executable code ng database at lahat ng data.

    Paglalaan ng isang lubos na magagamit na database na may kaunting oras ng pagtugon Tutulungan ka ng aming mga eksperto na i-optimize ang iyong mga database upang makuha ang maximum na bilis ng iyong server. Ang pagsusuri ng mga pagkaantala, ang kahusayan ng cache, mga index, "mabigat na mga query", ang gawain ng query optimizer ay isinasagawa, at ang mga rekomendasyon ay ibinibigay upang mapabuti ang kahusayan ng trabaho.

    Pag-optimize ng database para sa mga partikular na application Ino-optimize at ini-tune namin ang mga database ng MS SQL at Oracle para sa mga application ng negosyo, tulad ng mga system management system, management accounting system, portal solutions, atbp. Kapag nagsasagawa ng trabaho, ginagabayan kami ng mga rekomendasyon ng mga software vendor para sa pag-set up ng software, gayundin ng aming sariling optimization experience DB para sa iba't ibang uri ng user load.

    Pagpili ng isang platform ng hardware para sa pag-deploy ng software ng database Ang mga modernong database vendor ay may mga listahan ng hardware na pinakamainam para sa pagpapatakbo ng isang database. Maaari naming suriin ang iyong mga kagustuhan sa vendor, maghanap ng mga server kung saan maaari kang mag-deploy ng software ng database, o maghanda ng isang detalye para sa pagbili ng kagamitan sa database.

    Pagsusuri at pag-optimize ng virtual database environment Ang mga problema sa pagganap ng anumang software sa isang virtualized na kapaligiran ay karaniwang nauugnay sa mga kakaibang katangian ng bawat partikular na hypervisor at ang hardware kung saan tumatakbo ang mga virtual server. Tutulungan ka ng aming mga eksperto na matukoy ang mga sanhi ng pagbagal at i-optimize ang paglalagay ng software ng database sa mga virtual server sa iyong data center.

    Kumuha ng tumpak na pagtatantya ng proyekto mula sa aming koponan o alamin kung paano magsagawa ng survey nang walang bayad sa iyo na may suporta sa vendor.

  • Bakit kailangan ang pag-optimize ng server

    5 (100%) 2 [mga] boto

    Ang modernong mundo ng negosyo ay matagal nang nasakop ang kalawakan ng Internet. Ngunit ang pagbuo ng isang kumikitang website ay hindi lamang ang kailangan upang magpatakbo ng isang matagumpay na negosyo. Kung mayroon ka nang ganoong site, dapat mong isipin ang tungkol sa pag-optimize ng server.

    Bakit kailangan natin ng pag-optimize ng server?

    Ang katotohanan ay na sa pagtaas ng bilang ng mga kliyente ng iyong site, ang kanilang komportable at mabilis na serbisyo ay tiyak na kinakailangan (pagkatapos ng lahat, ito ang tanging paraan upang matagumpay na mapaunlad ang iyong negosyo). Sa ganitong mga sitwasyon na nagsisimulang lumitaw ang mga sumusunod na problema:

    • Mabagal na naglo-load ang mga pahina ng website
    • maaaring ganap na wala ang access dito.

    Ang mga problemang ito ang magsasaad na ang server ay nasa isang overloaded na estado at hindi maaaring gumanap ng mga direktang function nito.

    Siyempre, sa kasong ito, may panganib na mawala kahit ang iyong mga regular na customer. Kahit na ang pinakamaraming pasyente sa kanila ay maaaring lumipat sa isang nakikipagkumpitensyang site kapag sila ay napagod sa paghihintay na ma-access ang sa iyo.

    Inirerekomenda ng mga eksperto: bigyang-pansin ang pagganap ng server sa lalong madaling panahon at simulan ang pag-optimize nito. Ang ganitong hakbang ay magbibigay-daan sa lahat ng mga customer na maging komportable sa iyong site, na, nang naaayon, ay makakaapekto sa pag-unlad ng iyong negosyo.

    Ano ang pag-optimize ng server?

    Gaya ng nakikita mo, ang pinakamainam na paggana ng anumang website ay direktang nauugnay sa . Kung binisita ng kliyente ang pahina ng site, ipapadala ang kahilingan sa server, kung saan ito pinoproseso at nabuo ang isang tugon. Ang bilis ng naturang pamamaraan ng pagtugon ay nakasalalay sa server, lalo na sa mga katangian ng pagganap nito. Sa pinakamababang bilis, kailangang pabilisin ang server - upang mapataas ang bilis ng pagtugon.

    Maraming user ang gumagawa ng hakbang ng pagpapalit ng hardware ng mas makapangyarihang feature para mapabilis ang mga server. Ngunit ang gayong paraan ay hindi palaging nagbibigay-katwiran sa sarili at hindi pinapayagan ang paglutas ng mga problema na lumitaw.

    Iminumungkahi ng aming mga eksperto na pumunta sa ibang paraan:

    1. tukuyin ang problema mismo (ano ang pumipigil sa server na gumana nang mabilis?),
    2. fine-tune ang apache;
    3. i-install at i-configure ang isang caching nginx web server para sa isang partikular na configuration ng server;
    4. i-set up ang mysql database server:
    • laki ng buffer,
    • query caching,
    • nagtatrabaho sa mga talahanayan
    1. i-install at i-configure ang caching module para sa php (XCache, EAccelerator, atbp.);
    2. i-optimize ang mga kinakailangang setting operating system.

    Ang diskarte na ito ay makakatulong na mapabilis ang pagganap ng server.

    Mayroong ilang mga paraan upang mapabuti ang pagganap ng server, ngunit ang pag-optimize ay ang pinakamahusay.

    Operating System Optimization (FreeBSD)

    • Lumipat sa 7.x ay kapaki-pakinabang para sa mga multi-core system dahil magagamit ang bagong ULE 3.0 Scheduler at jemalloc. Kung gumagamit ka ng legacy na 6.x system at hindi nito mahawakan ang load, oras na para mag-upgrade sa 7.x.
    • Pag-upgrade sa 7.2 tataas ang KVA, i-optimize ang sysctl bilang default at ilalapat ang mga superpage. Ang isang bagong FreeBSD 8.0 ay inihahanda na, na makakatulong sa makabuluhang pagtaas ng pagganap.
    • Lumipat sa amd64 ginagawang posible na pataasin ang mga volume ng KVA at Shared Mem nang higit sa 2Gb. Kinakailangan na lumikha ng mga kondisyon para sa pag-unlad ng server, dahil ang mga database ay patuloy na lumalaki at nangangailangan ng malalaking sukat.
    • Pag-alis ng subsystem ng network sa FreeBSD ay makakatulong sa pag-optimize ng server. Maaaring gawin ang prosesong ito sa dalawang hakbang: pag-tune ng mga opsyon sa ifconfig at mga setting ng sysctl.conf/loader.conf. Sa yugto ng paghahanda, dapat mong suriin ang mga kakayahan ng network card. Ang mga driver mula sa Yandex ay makakatulong sa pagtaas ng bilis sa pamamagitan ng paggamit ng maraming mga thread, madalas silang ginagamit para sa mga proseso ng multi-core. Para sa isang third-rate na network card, ang botohan ay ang pinakamahusay na solusyon. Ang pinakabagong na-update na bersyon ng FreeBSD 7 tuning ay makakatulong sa paglutas ng problema.
    • FreeBSD at isang malaking bilang ng mga file gumana nang mahusay salamat sa pag-cache ng mga filename sa direktoryo. Ang paghahanap ng hash table ay makakatulong sa iyo na mabilis na mahanap ang file na kailangan mo. Bagama't ang maximum na dami ng memory ay humigit-kumulang 2MB, maaari mo itong dagdagan hangga't pinapayagan ito ng vfs.ufs.dirhash_mem.
    • Mga softupdate, gjournalatbundok mga pagpipilian- Ito ang mga bagong terabyte na turnilyo na may mahusay na pagganap. Sa pagkawala ng kuryente, magtatagal ang fsck sa fsck, kaya maaari kang gumamit ng mga softupdate o mag-log sa pamamagitan ng gjournal.

    Pag-optimize ng frontend (nginx)

    Ang ganitong uri ay maaaring maiugnay sa napaaga na pag-optimize, bagama't makakatulong ito na mapataas ang kabuuang oras ng pagtugon ng site. Kabilang sa mga karaniwang pag-optimize, dapat mong bigyang pansin ang reset_timedout_connection; sendfile; tcp_nopush at tcp_nodelay.

    • Tanggapin ang Mga Filter ay isang teknolohiya na ginagawang posible ang paglipat ng impormasyon mula sa kernel patungo sa proseso kung sakaling magkaroon ng bagong data o isang wastong kahilingan sa http. Ang mga filter na ito ay makakatulong upang ma-offload ang server na may malaking bilang ng mga koneksyon.
    • pag-cache sa nginx ito ay nailalarawan sa pamamagitan ng kakayahang umangkop, at nagmula sa fastcgi o mula sa mga proxy backend. Magagamit ng lahat ang caching sa matalinong paraan sa kanilang proyekto.
    • AIO ay lubhang kapaki-pakinabang para sa ilang partikular na workload ng server dahil nakakatipid ito ng oras ng pagtugon habang binabawasan ang bilang ng mga manggagawa. Ginagawang posible ng mga bagong bersyon ng nginx na gumamit ng aio kasabay ng sendfile.

    Pag-optimize ng backend

    • APC ay isang balangkas na nagbibigay-daan sa iyong bawasan ang pagkarga sa pamamagitan ng pag-cache ng pinagsama-samang code sa OP. Ang pag-lock ng APC ay dapat na i-upgrade, dahil maaari itong bumagal at sa halip na APC, maraming tao ang nagsisimulang gumamit ng eAccelerator. Ito ay nagkakahalaga ng pagpapalit ng pag-lock ng spinlock o pthread mutex. Ang halaga ng mga pahiwatig ng APC ay dapat na itaas kapag mayroong isang malaking bilang ng mga .php file o kapag ang pag-cache sa cache ng gumagamit ng APC ay madalas. Ang fragmentation ng APC ay isang senyales na ginagamit mo ang APC sa maling paraan. Hindi siya maaaring mag-isa na makitungo sa pag-alis ng mga tala ng TTL o LRU.
    • PHP 5.3 ay makakatulong na mapataas ang performance boost, kaya sulit na i-update ang iyong bersyon ng PHP, kahit na ang listahan ng mga hindi na ginagamit na function ay maaaring matakot sa marami.

    Pag-optimize ng database

    Mayroong maraming mga ideya sa kung paano pagbutihin ang pagganap ng MySQL sa Internet, dahil ang bawat proyekto sa web maaga o huli ay nahaharap sa mga limitasyon ng memorya, disk o processor. Samakatuwid, ang mga simpleng solusyon ay hindi makakatulong upang makayanan ang problema, ito ay nagkakahalaga ng paglalaan ng mas maraming oras sa mga profiler (dtrace, systemtap at oprofile), pati na rin ang paggamit ng maraming karagdagang software. Ito ay kinakailangan hindi lamang upang ganap na magamit ang mga index, upang ayusin at ipangkat ang mga ito, ngunit upang malaman din kung paano gumagana ang lahat sa loob ng MySQL. Kailangan mo ring malaman ang mga pakinabang at disadvantage ng iba't ibang storage engine, unawain ang Query cache at Ipaliwanag.

    Mayroong ilang mga paraan upang ma-optimize ang MySQL, kahit na hindi binabago ang mga code, dahil ang kalahati ng pag-tune ng server ay maaaring gawin nang semi-awtomatikong gamit ang tuningprimer, mysqltuner at mysqlsla utilities.

    • Paglipat sa 5.1 nagbibigay ng maraming mga pakinabang, bukod sa kung saan ito ay nagkakahalaga ng pag-highlight ng optimizer optimization, Partitioning, InnoDB plugin at Row based replication. Para mapabilis ang site, sinusubok na ng ilang extremals ang bersyon 5.4.
    • Lumipat sa InnoDB nagbibigay ng maraming benepisyo. Ito ay ACID compliant, kaya ang anumang operasyon ay ginagawa sa isang transaksyon lamang. Mayroon itong row-level locking, na ginagawang posible na sabay na magbasa at magsulat ng maraming mga thread nang hiwalay sa isa't isa.
    • MySQL built-in na cache - Query Cache ay medyo mahirap maunawaan, kaya maraming mga gumagamit ang gumagamit nito nang hindi makatwiran o hindi pinagana. Para sa kanya, higit pa ay hindi nangangahulugang mas mahusay, kaya hindi mo dapat dalhin ang subsystem na ito sa maximum. Ang Query Cache ay parallelized, bilang isang resulta, kapag gumagamit ng higit sa walong proseso, ito ay magpapabagal lamang sa buong proseso, at hindi makatutulong sa pagbawas ng oras ng pag-load ng site. Ang mga nilalaman ng subsystem na ito na kabilang sa isang partikular na talahanayan ay hindi wasto kapag ang mga pagbabago ay ginawa sa talahanayang iyon. Nangangahulugan ito na ang Query Cache ay gagana lamang kung gumagamit ka ng mahusay na disenyo ng mga talahanayan.
    • Maaaring makasama ang mga index para sa SELECT (kung wala sila) at para sa INSERT/UPDATE (kung may mga dagdag). Ang isang index na hindi na ginagamit ay sumasakop pa rin sa memorya at sa gayon ay nagpapabagal sa mga pagbabago ng data. Upang harapin ang problemang ito, dapat kang gumamit ng isang simpleng query sa SQL.

    PostgreSQL

    Ang sistema ng Postgres ay medyo maraming nalalaman, dahil kabilang ito sa klase ng Enterprise at gumagana nang maayos ang Skype dito, ngunit sa parehong oras maaari itong mai-install kahit na sa cellphone. Kabilang sa magagamit na 200 mga parameter, 45 sa mga ito ay basic at responsable para sa pag-tune.

    Sa Internet makakahanap ka ng maraming kapaki-pakinabang na impormasyon sa pag-tune ng Postgres. Ngunit ang ilang mga artikulo ay luma na, kaya dapat kang magsimula sa petsa ng publikasyon at bigyang-pansin ang impormasyon kung saan ginagamit ang vacuum_mem key, o sa mga bagong bersyon ng maintenance_mem. Ang mga advanced na programmer ay makakahanap ng maraming de-kalidad na treatise, sa ibaba ay inilista lang namin ang mga pangunahing kaalaman na makakatulong sa karaniwang user na mapabuti ang kanilang proyekto.

    • Mga indeks Ang PostgreSQL ay palaging nasa unang lugar, habang sa MySQL sila ay palaging nasa huling posisyon, at ito ay maaaring ipaliwanag sa pamamagitan ng katotohanan na ang mga PostgreSQL index ay may napakalaking kakayahan. Ang programmer ay dapat na bihasa sa mga naturang index, at alam kung kailan at alin ang gagamitin, tulad ng GiST, GIN, hash at B-tree, pati na rin ang partial, multicolumn at sa mga expression.
    • pgBouncer at ang mga alternatibo nito ay dapat munang mai-install sa database server. Kung walang koneksyon na pooler, ang bawat kahilingan ay lumilikha ng isang hiwalay na proseso na ginagamit RAM. Mukhang okay lang, ngunit kapag lumilikha ng higit sa 200 mga koneksyon, kahit na ang isang napakalakas na server ay halos hindi makayanan ang pagproseso ng impormasyon. Tumutulong ang pgBouncer sa problemang ito.
    • pgFouine ay isang kailangang-kailangan na programa, dahil maaari itong ligtas na tawaging isang analogue ng mysqlsla sa php. Kasabay ng Playr, maaari itong magsagawa ng pag-optimize ng query sa mahihirap na kondisyon sa mga server ng pagtatanghal.

    Pag-unload ng database

    Upang ma-optimize ang pagpapatakbo ng database at mapataas ang pagganap nito, dapat mong gamitin ito nang kaunti hangga't maaari.

    • SphinxQL maaaring magamit bilang isang MySQL server. Upang gawin ito, kailangan mo lamang lumikha ng sphinx.conf, pati na rin ang mga entry para sa indexer sa cron at lumipat sa isa pang database. Sa mga pagkilos na ito, hindi na kailangang baguhin ang code. Ang paglipat sa SphinxQL ay makakatulong na mapabuti ang bilis at kalidad ng paghahanap, gayundin ang paglimot sa MyISAM at FTS.
    • Imbakan na hindi RDBMS nagpapahintulot na huwag gumamit ng relational database. Maaari kang pumili para sa Hive o Oracle. Ang database ng key-value, dahil sa bilis nito, ay gumagamit ng mga seleksyon mula sa mga relational database para sa karagdagang pag-cache. Maaaring gamitin ng mga nagmamay-ari ng malalaking proyekto sa PHP ang mahusay na feature ng cache ng opcode upang iimbak ang lahat ng custom na data. Sa pamamagitan nito, maaari mong mapagkakatiwalaan na i-save ang kahit na mga pagbabago sa pandaigdigang halaga, dahil kumukuha sila ng kaunting espasyo at halos hindi kumukuha ng memorya, at ang bilis ng sampling ay tataas din nang malaki. Kung para sa isang malaking proyekto ang isang bloke ng mga pandaigdigang pagbabago ay nakasulat sa isang makina lamang, kung gayon ang trapiko ay lumalaki, at nagsisimula itong bumagal nang husto. Upang malutas ang problemang ito, kinakailangan na mag-imbak ng mga pandaigdigang variable sa opcode cacher o clone variable sa lahat ng mga server at magsulat ng mga exception sa consistency hashing algorithm.
    • Mga encoding ay kabilang sa mga epektibong pamamaraan para sa pag-offload ng isang database. Kapansin-pansin na ang UTF-8 ay isang mahusay na pagpipilian, ngunit sa Russian ito ay tumatagal ng maraming espasyo, kaya para sa isang monolingual contingent, dapat mo munang isipin ang tungkol sa makatwirang paggamit ng pag-encode.
    • Makakatulong ang Asynchrony na bawasan ang oras ng pagtugon ng isang application o site, pati na rin ang makabuluhang bawasan ang load sa server mismo. Ang mga batch na kahilingan ay ginagawa nang mas mabilis kaysa sa karaniwang mga single. Para sa malalaking proyekto, maaari mong gamitin ang RabbitMQ, ApacheMQ, o ZeroMQ na mga mensahe, at para sa maliliit na proyekto, cron lang ang magagamit mo.

    Mga karagdagang application para sa pag-optimize

    • SSHGuard o alternatibo ay karaniwang kasanayan para sa ssh. Tumutulong ang anti-brute force na lumikha ng maaasahang proteksyon ng server mula sa mga pag-atake ng bot.
    • Xtrabackup by Percona ay isang mahusay na MySQL backup tool na may maraming mga pagpipilian sa pagpapasadya. Pero perpektong solusyon sulit pa rin ang pagbibigay ng pangalan sa mga clone sa ZFS, dahil ang mga ito ay nilikha nang napakabilis, at upang maibalik ang database, sapat na upang baguhin ang mga landas sa mga file sa pagsasaayos ng kalamnan. Pinapayagan ka ng mga clone na ibalik ang system mula sa simula.
    • Paglipat ng mail sa ibang host ay makakatipid ng trapiko at mga IOP kung ang iyong server ay binomba lamang ng spam.
    • Pagsasama ng ikatlong partido software ay makakatulong upang ma-optimize ang mysql server. Halimbawa, para sa pagmemensahe, maaari mong gamitin ang smtp / imap bundle, na hindi kukuha ng maraming memorya. Upang lumikha ng isang chat, ito ay sapat na upang gamitin ang batayan ng jabber server na may isang javascript client. Ang mga system na ito, na nakabatay sa mga adapter ng produkto na wala sa istante, ay lubos na nasusukat.
    • Ang pagsubaybay ay isang napakahalagang bahagi, dahil imposibleng ma-optimize ang anumang bagay nang walang detalyadong pagsusuri. Kinakailangang subaybayan ang mga sukatan ng pagganap, libreng mapagkukunan at pagkaantala, makakatulong dito ang Zabbix, Cacti, Nagios at iba pang mga tool. Binibigyang-daan ka ng Web Performance Test na kalkulahin ang bilis ng pag-load ng isang site o proyekto, kaya nakakatulong ito nang malaki sa pagsubaybay. Kapag nagse-set up ng isang server ng pagganap, tandaan na ang isang masusing pagsusuri lamang ang makakatulong na maalis ang lahat ng mga problema at mag-optimize.

    Huwag maunawaan ang kalahati ng kung ano ang nakasulat - ito ay hindi mahalaga.