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:
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] botoAng 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.
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:
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.
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:
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.
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.
Pag-optimize ng backend
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.
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.
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.
Huwag maunawaan ang kalahati ng kung ano ang nakasulat - ito ay hindi mahalaga.