Barr fakapov Cian

Barr fakapov Cian

Maith thú go léir! 

Nikita is ainm dom, is ceannaire foirne mé ar fhoireann innealtóireachta Cian. Ceann de na freagrachtaí atá orm ag an gcuideachta ná líon na dteagmhas a bhaineann le bonneagar i dtáirgeadh a laghdú go nialas.
Thug an méid a phléifear thíos go leor pian dúinn, agus is é cuspóir an ailt seo ná cosc ​​a chur ar dhaoine eile ár gcuid botúin a dhéanamh arís nó ar a laghad a dtionchar a laghdú. 

Brollach

I bhfad ó shin, nuair a bhí Cian comhdhéanta de mhonailítí, agus ní raibh aon leideanna de mhicrisheirbhísí fós, thomhaiseamar infhaighteacht acmhainne trí 3-5 leathanach a sheiceáil. 

Freagraíonn siad - tá gach rud go breá, mura bhfreagraíonn siad ar feadh i bhfad - airdeall. Chinn daoine i gcruinnithe cá fhad a bhí orthu a bheith as obair le go mbreathnófaí air mar eachtra. Bhí foireann innealtóirí páirteach i gcónaí in imscrúdú na heachtra. Nuair a bhí an t-imscrúdú críochnaithe, scríobh siad iarbháis - cineál tuairisce ar ríomhphost san fhormáid: cad a tharla, cé chomh fada agus a mhair sé, cad a rinne muid faoi láthair, cad a dhéanfaimid amach anseo. 

Príomhleathanaigh an tsuímh nó conas a thuigimid go bhfuil muid buailte ag bun an leathanaigh

 
Chun tosaíocht na hearráide a thuiscint ar bhealach éigin, tá na leathanaigh suímh is tábhachtaí aitheanta againn maidir le feidhmiúlacht ghnó. Agus iad á n-úsáid, déanaimid comhaireamh ar líon na n-iarratas ar éirigh leo nó nár éirigh leo agus amanna ama. Seo mar a thomhaisimid aga fónaimh. 

Ligean le rá go bhfuaireamar amach go bhfuil roinnt codanna sár-thábhachtacha ar an suíomh atá freagrach as an bpríomhsheirbhís - ag cuardach agus ag cur isteach fógraí. Má sháraíonn líon na n-iarratas a dteipeann orthu 1%, is teagmhas criticiúil é seo. Má sháraíonn an ráta earráide 15% laistigh de 0,1 nóiméad le linn príomh-ama, meastar gur teagmhas criticiúil é seo freisin. Clúdaíonn na critéir seo an chuid is mó de na teagmhais; tá an chuid eile lasmuigh de raon feidhme an ailt seo.

Barr fakapov Cian

Barr eachtraí is fearr Cian

Mar sin, ní mór dúinn a fhoghlaim cinnte a chinneadh ar an bhfíric gur tharla eachtra. 

Anois déantar cur síos mion ar gach eachtra agus léirítear é in eipiciúil Jira. Dála an scéil: le haghaidh seo chuireamar tús le tionscadal ar leith, ar a dtugtar é TEIP - ní féidir ach epics a chruthú ann. 

Má bhailíonn tú na teipeanna go léir le blianta beaga anuas, is iad na ceannairí: 

  • teagmhais a bhaineann le mssql;
  • teagmhais de bharr fachtóirí seachtracha;
  • earráidí riaracháin.

Breathnaímid níos mine ar bhotúin na riarthóirí, chomh maith le roinnt teipeanna suimiúla eile.

An cúigiú háit - “Rudaí a chur in ord sa DNS”

Dé Máirt stoirmiúil a bhí ann. Shocraigh muid ord a chur ar ais sa bhraisle DNS. 

Bhí mé ag iarraidh freastalaithe DNS inmheánacha a aistriú ó bind go powerdns, ag leithdháileadh freastalaithe go hiomlán ar leithligh le haghaidh seo, i gcás nach bhfuil aon rud ach DNS. 

Chuireamar freastalaí DNS amháin i ngach suíomh dár DCanna, agus tháinig an nóiméad chun criosanna a bhogadh ó cheangal go powerdns agus an bonneagar a aistriú go freastalaithe nua. 

I lár an aistrithe, de na freastalaithe go léir a sonraíodh i gceangal taisce áitiúil ar na freastalaithe go léir, níor fhan ach ceann amháin, a bhí san ionad sonraí i St Petersburg. Fógraíodh an DC seo ar dtús mar neamhchriticiúil dúinn, ach go tobann tháinig sé ina phointe teip amháin.
Ba le linn na tréimhse athlonnaithe seo a thit an chanáil idir Moscó agus St Petersburg síos. Fágadh gan DNS muid ar feadh cúig nóiméad agus d'éirigh linn nuair a réitigh an t-óstaer an fhadhb. 

Conclúidí:

Más rud é níos luaithe rinneamar faillí ar fhachtóirí seachtracha le linn ullmhúcháin don obair, anois tá siad san áireamh freisin ar an liosta de na rudaí atá á n-ullmhú againn. Agus anois déanaimid ár ndícheall a chinntiú go gcoimeádtar na comhpháirteanna go léir n-2, agus le linn na hoibre is féidir linn an leibhéal seo a ísliú go n-1.

  • Agus plean gníomhaíochta á dhréachtú agat, marcáil na pointí ina dteipfeadh ar an tseirbhís, agus smaoinigh ar chás ina ndeachaigh gach rud “ó olc go dtí níos measa” roimh ré.
  • Déan freastalaithe DNS inmheánacha a dháileadh thar geoshuímh / ionaid sonraí / racaí / lasca / ionchuir éagsúla.
  • Ar gach freastalaí, suiteáil freastalaí DNS caching áitiúil, a atreoraíonn iarratais chuig na príomhfhreastalaithe DNS, agus mura bhfuil sé ar fáil, freagróidh sé ón taisce. 

Ceathrú háit - “Ag cur rudaí in ord i Nginx”

Lá breá amháin, chinn ár bhfoireann “go raibh go leor de seo faighte againn,” agus cuireadh tús leis an bpróiseas chun cumraíochtaí nginx a athmhacrú. Is é an príomhsprioc ná na cumraíochtaí a thabhairt chuig struchtúr iomasach. Roimhe seo, bhí gach rud “bunaithe go stairiúil” agus ní raibh aon loighic ag baint leis. Anois bogadh gach server_name chuig comhad den ainm céanna agus dáileadh na cumraíochtaí go léir i bhfillteáin. Dála an scéil, tá 253949 línte nó 7836520 carachtar sa chumraíocht agus tógann sé suas le beagnach 7 meigibheart. Ardleibhéal struchtúir: 

Struchtúr Nginx

├── access
│   ├── allow.list
...
│   └── whitelist.conf
├── geobase
│   ├── exclude.conf
...
│   └── geo_ip_to_region_id.conf
├── geodb
│   ├── GeoIP.dat
│   ├── GeoIP2-Country.mmdb
│   └── GeoLiteCity.dat
├── inc
│   ├── error.inc
...
│   └── proxy.inc
├── lists.d
│   ├── bot.conf
...
│   ├── dynamic
│   └── geo.conf
├── lua
│   ├── cookie.lua
│   ├── log
│   │   └── log.lua
│   ├── logics
│   │   ├── include.lua
│   │   ├── ...
│   │   └── utils.lua
│   └── prom
│       ├── stats.lua
│       └── stats_prometheus.lua
├── map.d
│   ├── access.conf
│   ├── .. 
│   └── zones.conf
├── nginx.conf
├── robots.txt
├── server.d
│   ├── cian.ru
│   │   ├── cian.ru.conf
│   │   ├── ...
│   │   └── my.cian.ru.conf
├── service.d
│   ├── ...
│   └── status.conf
└── upstream.d
    ├── cian-mcs.conf
    ├── ...
    └── wafserver.conf

D'éirigh sé i bhfad níos fearr, ach i bpróiseas athainmniú agus dáileadh cumraíochtaí, bhí an síneadh mícheart ag cuid acu agus níor áiríodh iad sa treoir áirítear *.conf. Mar thoradh air sin, ní raibh roinnt óstach ar fáil agus d'fhill siad 301 ar an bpríomhleathanach. Toisc nach raibh an cód freagartha 5xx/4xx, níor tugadh faoi deara é seo láithreach, ach ar maidin amháin. Tar éis sin, thosaigh muid ag scríobh tástálacha chun comhpháirteanna bonneagair a sheiceáil.

Conclúidí: 

  • Déan do chuid cumraíochtaí a struchtúrú i gceart (ní hamháin nginx) agus smaoineamh ar an struchtúr ag céim luath den tionscadal. Ar an mbealach seo beidh tú níos intuigthe don fhoireann iad, rud a laghdóidh TTM ina dhiaidh sin.
  • Scríobh tástálacha le haghaidh roinnt comhpháirteanna bonneagair. Mar shampla: ag seiceáil go dtugann gach freastalaí_ainm eochair an stádas ceart + comhlacht freagartha. Beidh sé go leor ach cúpla script a bheith ar láimh a sheiceálann feidhmeanna bunúsacha na comhpháirte, ionas nach gcuirfí i gcuimhne go frantically ag 3 am cad eile is gá a sheiceáil. 

An tríú háit - “Rith go tobann as spás i gCassandra”

D'fhás na sonraí go seasta, agus bhí gach rud go breá go dtí an nóiméad nuair a thosaigh deisiú cásspásanna móra ag teip i mbraisle Cassandra, toisc nach bhféadfadh dhlúthú oibriú orthu. 

Lá stoirmiúil amháin d’iompaigh an braisle ina phumpkin beagnach, mar atá:

  • bhí thart ar 20% den spás iomlán fágtha sa bhraisle;
  • Tá sé dodhéanta nóid a chur leis go hiomlán, toisc nach dtéann glantachán tar éis nód a chur leis mar gheall ar easpa spáis ar na landairí;
  • titeann an táirgiúlacht de réir a chéile toisc nach n-oibríonn dhlúthú; 
  • Tá an braisle i mód éigeandála.

Barr fakapov Cian

Scoir - chuireamar 5 nóid eile leis gan glantachán, agus ina dhiaidh sin thosaigh muid ar iad a bhaint go córasach as an mbraisle agus iad a chur isteach arís, cosúil le nóid fholmha a bhí imithe as an spás. Caitheadh ​​i bhfad níos mó ama ná mar ba mhaith linn. Bhí an baol ann nach mbeadh an braisle ar fáil go páirteach nó go hiomlán. 

Conclúidí:

  • Ar gach freastalaí cassandra, níor cheart níos mó ná 60% den spás ar gach críochdheighilt a áitiú. 
  • Ba chóir iad a luchtú ag nach mó ná 50% cpu.
  • Níor cheart duit dearmad a dhéanamh ar phleanáil acmhainne agus ní mór duit machnamh a dhéanamh air do gach comhpháirt, bunaithe ar a sonraí.
  • Na nóid níos mó sa bhraisle, is amhlaidh is fearr. Déantar ró-ualach ar fhreastalaithe ina bhfuil méid beag sonraí níos tapúla, agus is fusa braisle den sórt sin a athbheochan. 

An dara háit - “Sonraí imithe ó stóras luach eochrach an chonsaile”

Chun seirbhís a fhionnachtain, bainimid, cosúil le go leor, úsáid as consal. Ach bainimid úsáid freisin as a phríomhluach maidir le leagan amach gorm-uaine ar an monolith. Stórálann sé faisnéis faoi shruthanna réamhghníomhacha agus neamhghníomhacha, a athraíonn áiteanna le linn imlonnaithe. Chun na críche sin, scríobhadh seirbhís imscartha a rinne idirghníomhú le KV. Ag pointe éigin, imithe na sonraí ó KV. Athchóiríodh ón gcuimhne, ach le roinnt earráidí. Mar thoradh air sin, le linn an uaslódála, dáileadh an t-ualach ar na sruthanna suas go míchothrom, agus fuair muid go leor earráidí 502 mar gheall ar na haiséil a bheith ró-ualach ar an LAP. Mar thoradh air sin, bhogamar ó chonsal KV go postgres, áit nach bhfuil sé chomh furasta iad a bhaint a thuilleadh.  

Conclúidí:

  • Níor cheart go mbeadh sonraí atá ríthábhachtach maidir le feidhmiú an tsuímh i seirbhísí gan údarú. Mar shampla, mura bhfuil údarú agat in ES, bheadh ​​​​sé níos fearr rochtain a dhiúltú ar leibhéal an líonra ó gach áit nach bhfuil sé ag teastáil, gan ach na cinn riachtanacha a fhágáil, agus freisin action.destructive_requires_name: fíor.
  • Cleachtaigh do mheicníocht cúltaca agus aisghabhála roimh ré. Mar shampla, déan script roimh ré (mar shampla, i python) ar féidir cúltaca agus athchóiriú a dhéanamh air.

An chéad áit - "Captaen Gan Doiléir" 

Ag pointe éigin, thugamar faoi deara dáileadh míchothrom ualaigh ar nginx in aghaidh an tsrutha i gcásanna ina raibh freastalaithe 10+ san inneall. Mar gheall ar an bhfíric gur sheol robin bhabhta iarratais ón 1ú go dtí an ceann deireanach in aghaidh an tsrutha in ord, agus thosaigh gach athluchtú nginx os a chionn, fuair na chéad in aghaidh an tsrutha níos mó iarratas i gcónaí ná an chuid eile.Mar thoradh air sin, d'oibrigh siad níos moille agus d'fhulaing an láithreán ar fad. Tháinig sé seo níos suntasaí de réir mar a mhéadaigh an méid tráchta. Níor oibrigh ach nuashonrú nginx chun randamach a chumasú - ní mór dúinn bunch de chód luaith a athdhéanamh nár éirigh leis an leagan 1.15 (ag an nóiméad sin). Bhí orainn ár nginx 1.14.2 a phaisteáil, ag tabhairt tacaíochta randamach isteach ann. Réitigh sé seo an fhadhb. Bhuaigh an fabht seo an chatagóir “Captaen Neamh-Oiléireacht”.

Conclúidí:

Bhí sé an-suimiúil agus spreagúil an fabht seo a iniúchadh). 

  • Eagraigh do mhonatóireacht ionas go gcuideoidh sé leat luaineachtaí den sórt sin a aimsiú go tapa. Mar shampla, is féidir leat ELK a úsáid chun monatóireacht a dhéanamh ar rps ar gach inneall in aghaidh an tsrutha, monatóireacht a dhéanamh ar a gcuid ama freagartha ó thaobh nginx. Sa chás seo, chabhraigh sé seo linn an fhadhb a aithint. 

Mar thoradh air sin, d'fhéadfaí an chuid is mó de na teipeanna a sheachaint le cur chuige níos scrupallach maidir leis an méid a bhí á dhéanamh agat. Ní mór dúinn cuimhneamh i gcónaí ar dhlí Murphy: Aon rud is féidir dul mícheart, beidh sé ag dul mícheart, agus comhpháirteanna a thógáil bunaithe air. 

Foinse: will.com

Add a comment