Botrus elasticas 200 TB+

Botrus elasticas 200 TB+

Multi homines cum elastica inquisitione certant. Sed quid fit cum ea uti vis "in magno volumine" condere ligna? Etiamne sine dolore experiri defectum plurium notitiarum centra? Qualem architectonicam facere debes, et quas scandala offendes?

Nos apud Odnoklassniki constituimus elasticis inquisitionibus ad solvendum negotium administrationis solvendum, et nunc experientiam nostram communicamus cum Habr: tum de architectura et de foveis.

Ego Pyotr Zaitsev, administrator in Odnoklassniki laboro. Antea etiam admin eram, cum Investigatione Manticore laboravi, Sphingem quaere, Elasticationem. Forsitan, si alia ...quaerere videtur, cum eo quoque verisimiliter laborabo. Pluribus etiam apertis inceptis in fundamento voluntario participo.

Cum ad Odnoklassniki venissem, in colloquio temere dixi me cum Elasticsearch posse laborare. Postquam eam suspensam accepi et quaedam simplicia officia complevi, magnum mihi negotium datum est emendandi rationem administrationis stipendii, quae tunc temporis erat.

commodum

Systema requisita haec sunt:

  • Graylog utendum erat pro frontend. Quia societas iam expertus est utens hoc productum, programmatores et probatores sciverunt, illis familiare et conveniens fuit.
  • Data volumen: in mediocris 50-80 milia nuntia secundo, sed si aliquid frangitur, negotiatio nulla re limitatur, potest 2-3 decies centena millia lineae secundae.
  • Cum clientibus de requisitis ad celeritatem quaestionis expediendi pertractatis, intelleximus exemplar typicum huius systematis utendi hoc esse: homines tabulas applicationis eorum duobus proximis diebus quaerunt nec plus quam expectare volunt. alterum propter interrogationem formatae.
  • Administratores instabant ut ratio facile scalabiles, si opus esset, sine requirendo eas penitus intromitteret quomodo operaretur.
  • Unicum ad sustentationem opus est quod haec systemata periodice postulare est ut nonnulla ferramenta mutet.
  • Praeterea Odnoklassniki egregiam traditionem technicam habet: quodlibet servitium, quod insimulamus, necesse est superare defectum centri notitiarum (subito, incondito et absolute aliquando).

Postrema postulatio in hoc instituti exsecutione nobis maxime constant, de qua fusius dicam.

Environment

In quattuor centris notitiis laboramus, cum elasticae notae nodi in tribus tantum collocari possunt (pro multis causis non-technicis).

Haec quattuor centra notitiarum circiter 18 milia continent diversos fontes stipes - ferramenta, continentia, machinas virtuales.

Pluma momenti: botrus incipit in vasis podman non in machinis corporis, sed in sua nube productum una-nube. Vasa spondentur 2 coros, similia 2.0Ghz v4, cum possibilitate nucleorum reliquorum redivivi si vacant.

In aliis verbis:

Botrus elasticas 200 TB+

Mathematicae

Formam generalem solutionis initio vidi sic:

  • 3-4 VIPs sunt post A-recordum dominii Graylog, haec est inscriptio ad quam mittuntur acta.
  • uterque VIP LVS librarius est.
  • Post eam, ligna ad altilium in Graylog, quaedam notitiarum in forma GELF, quaedam in forma syslogorum veniunt.
  • Tunc omnia haec scripta sunt in magna batchia ad coordinatores elasticarum investigationis.
  • Et illi vicissim mittunt petitiones scribentes et legunt ad nodos pertinentes.

Botrus elasticas 200 TB+

terminology

Forsitan non omnes singillatim intelligant vocabula, in eo igitur aliquantulo immorari velim.

Investigatio elastica plura genera nodum habet - dominum, coordinatorem, nodi notae. Duae aliae species sunt variarum mutationum et communicationis inter varias ligaturas, sed ea tantum recensitabimus.

Magister
Omnes nodi qui in botro pingit, servat tabulam botri recentem, eamque inter nodos processuum eventum logicam distribuit, et varia genera custodiae botri latae praestat.

coordinator
Unum munus peragit: petita ab clientibus et itineribus commercii admittit. Si in libello scripto datur, maxime probabile, dominum rogabit, quem pervalida in indice rei posito eam iniciet, et petitionem ulteriorem rediget.

Data nodi
Copia data, inquisitiones inquisitiones ab extra venientes agit et operationes in shards in ea sitas agit.

graylog
Hoc simile est fusio Kibana cum Logstash in ACERVUS ACERVUS. Graylog coniungit utrumque UI et tigillum processus pipeline. Sub cucullo Graylog fugit Kafka et Zookeeper, quae connectivity Graylog ut botrum praebent. Greylog ligna cache (Kafka) in casu Elastica investigationis perpendat et infausta lege et scribe petitiones repetat, coetus et trabes signatas iuxta certa regulas. Sicut Logstash, Graylog habet functionalitatem ad ordines mitigandos antequam eos ad Elasticsearch scribens.

Praeterea Graylog in servitii inventionis aedificatum habet, quae nodi elasticae investigationis in promptu innititur, ut totam botrum tabulam obtineat et eam per peculiare tag eliquare possit, quod efficere potest ut petitiones certae continentiae dirigat.

Visu spectat aliquid simile hoc;

Botrus elasticas 200 TB+

Hoc est in casu specifica tortor. Hic histogram construimus secundum investigationis inquisitionis et ordines pertinentes ostentationis.

indices

Ad architecturae systema rediens, accuratius immorari vellem quam indicem exemplar aedificavimus ut omnia recte operarentur.

In superiore schemate, hoc est infimus: Elastica inquisitionis data nodi.

Index est magna ens virtualis elasticarum shardorum confecta. In se singula testae nihil aliud est quam index Lucene. Et vicissim quilibet Lucene index uno vel pluribus segmentis constat.

Botrus elasticas 200 TB+

Cum cogitabamus, figuravimus nos ut exigentii legendi velocitati in magna copia notitiarum occurreremus, necesse erat hanc datam "divulgare" aequaliter trans notas datas.

Hoc evenit in eo quod numerus lithargyri per indicem (cum replicationibus) stricte aequalem esse debet numero nodis notarum. Uno modo, ut fiat replicatio factoris aequalis duobus, scilicet dimidium botri amittere possumus. Et secundo, ut processus legatur et scribat petitiones ad minus dimidium botri.

Primum tempus repositionis decrevimus sicut XXX dies.

Distributio shardorum graphice repraesentari potest hoc modo:

Botrus elasticas 200 TB+

Tota griseo rectangulo index est. quadratus ruber est primarius testaceae sinistrae , prima in indice . Quadratum autem caeruleum est effigies testa. In diversis centris notitia locata sunt.

Cum alia testa addimus, ad tertium centrum data pergit. Et, in fine, hanc structuram consequimur, quae efficit ut sine notitia constantiae DC amittere possit;

Botrus elasticas 200 TB+

Rotationes indices, i.e. novum indicem ac vetustissimum delendo, eam aequalem fecimus 48 horis (secundum exemplar indicis usus: postremae 48 horae saepissime perscrutati sunt).

Hic index rotationis intervallo his rationibus obvenit;

Cum petitio inquisitionis ad certas notas nodi pervenit, tunc ex parte perficiendi utilior est cum quis testa queritur, si magnitudo coxae nodi nodi comparatur. Hoc permittit ut partem indicis in acervo "calidum" servare et celeriter accedere. Cum multa sunt "partes calidae", celeritas indices inquisitionis recedit.

Cum nodi incipit inquisitionem facere in una testa, plures relatorum collocat aequalem numerum nucleorum hyperthreading machinae physicae. Si quaesitio magnum numerum shardorum afficit, numerus staminum proportionaliter crescit. Hoc impulsum negativum in celeritate quaerendi habet et negative afficit indexing notitiarum novarum.

Ad necessariam latentium inquisitionem providendam, SSD uti decrevimus. Ad petitiones processus celeriter, machinae quae his vasis hosted saltem 56 nucleos habere debebant. Figura 56 electa est condicio condicione satis valoris qui numerum staminum determinat quas Elasticsearch in operatione generabit. In Elasitcsearch, plures parametri stamina piscinae directe dependent a numero nucleorum promptorum, qui vicissim directe afficiunt requisitum numerum nodis in botro secundum principium "nuclei pauciores - plures nodi".

Quam ob rem invenimus in mediocris pondo testaceorum circiter 20 gigabytarum, et per indicem 1 shards esse. Proinde si semel singulis horis 360 gyremur, habebimus 48 illas. Singulus index continet notitias per 15 dies.

Data scribendo et legendo circuitus

Sit figura quomodo notitia in hoc systemate memoratur.

Quodam petitionem dicamus a Graylog ad coordinatorem pervenisse. Exempli gratia, index 2-3 milium ordinum velimus.

Coordinator, petita a Graylog accepta, dominum interrogat: "In indicente rogando speciatim denotat indicem, sed in quo pervalida scribere non datum est."

Dominus respondet: "Scribe hanc informationem ad numerum pervalidum 71", post quem directo mittitur ad nodi notitiae pertinentes, ubi primarius numerus 71 pervalida sita est.

Post quem stipes transactionis replicatur ad replicationem quae est in alio Mauris interdum.

Botrus elasticas 200 TB+

Petitio inquisitionis a Graylog ad coordinatorem pervenit. Coordinator redigit secundum indicem, dum Elasticsearch petitiones distribuit inter primam crustam et replicationem utens principio rotundo.

Botrus elasticas 200 TB+

Nodi 180 inaequaliter respondent, et dum respondent, coordinator cumulat informationes quae iam "exspuuntur" velocioribus nodi datae. Post haec, cum vel omnia indicio pervenerunt, vel petitio ad tempus perventum est, omnia recta clienti dat.

Tota haec ratio in mediis processibus quaere inquisitionem pro ultimis 48 horis in 300-400ms, exclusis quaestionibus cum wildcard ducens.

Flores cum Elasticsearch: Java setup

Botrus elasticas 200 TB+

Ad omne opus quod instituimus, diutissime debugging varietate rerum in botro abegimus.

Prima pars quaestionum inventarum relata est ad viam Javae per defaltam in Elasticsearch praefiguratam.

Quaestio unum
Plurimum relationum vidimus quod in gradu Lucene, cum in background jobs currunt, segmentum Lucene cum errore deficiunt. Eodem tempore constabat in lignis hunc errorem fuisse OutOfMemoryError. Vidimus ex telemetria coxam liberam esse, nec liquet quare haec operatio deficeret.

Contigit ut index mergorum Lucene extra coxam contingat. Sunt et continentia stricte limitata secundum facultates consumptas. Tantum acervus in has facultates accommodare potuit (agger.size valor RAM proxime aequalis erat), et nonnullae operationes acervus errore destinatio memoriae concrepuit, si aliqua de causa in 500MB qui ante limitem remanserant non congruebant.

Fix admodum levis erat: moles RAM praesto continentis aucta est, postquam obliti sumus nos etiam tales habuisse difficultates.

quaestio duo
4-5 dies post launch of botri, notavimus datas nodos periodice e botro cadere et inire post 10-20 secundos.

Cum eam inspicere coepimus, evenit ut hoc acervum memoria in Elastica investigatione nullo modo contineatur. Cum plus memoriae mandaremus continenti, lacunas directas quiddam variis indiciis replere poteramus, et solum sublatum est postquam explicatum GC ex Elastica investigatione est emissum est.

Nonnullis in casibus, haec operatio satis diu sumpsit, ac per id tempus botrus ad notandum hunc nodi iam exierunt. Hoc problema bene describit hic.

Solutio haec erat: Javam facultatem circumscripsimus utendi mole memoriae extra acervum ad has operationes. Nos eam ad 16 gigabytes circumscripsimus (-XX:MaxDirectMemorySize=16g), ut expressa GC multo frequentius vocaretur et multo velocius processisset, eo quod botrum iam non destabilit.

Quaestio tres
Si problemata cum "nodis relictis botro in inopinatissimo momento" existimas esse finita, erras.

Cum indicibus opus figuravimus, elegimus mmapfs to . redigendum quaero tempus recentibus shards magnis justo. Hoc satis erroneum fuit, quod cum mmapfs tabella in RAM decisa est, tum fasciculo deformato laboramus. Propter quod evenit ut cum GC in applicatione stamina prohibere nititur, ad tutelam diutissime itur, et in via ad eam applicatio cessat ut precibus domini respondeat utrum viveret. . Itaque dominus credit nodi in botro iam non adesse. Post haec, post 5-10 secundas, purgamentum collector opera, nodo ad vitam venit, botrum iterum intrat et shards initializing incipit. Omnes valde similes senserunt Β« productionem quam meruimus Β» nec ad rem gravem aptam fuisse.

Ad hanc agendi rationem tollendam, primum ad normas niofs transivimus, deinde, cum e quinta Elasticae versionis ad Sextum versiones migravimus, hybridfs conati sumus, ubi hoc problema non est expressum. Potes legere plura genera de repono hic.

Quaestio quattuor
Tunc alia quaestio valde interesting quae pro recordo tempore tractavimus. Nos per 2-3 menses cepimus quia exemplar eius absolute incomprehensibile fuit.

Aliquando coordinatores nostri ierunt ad plenam GC, plerumque aliquando post prandium, et nunquam inde recesserunt. Simul, cum mora GC colligationem, hoc videbatur: omnia bene, bene, bene, et subito omnia pessime geruntur.

In primis nos putavimus quod usorem pessimum habuimus, qui petebat quod coordinator extra modum operandi pulsabatur. Petitiones initium fecimus diutissime, quaerentes quid rei esset instar.

Quam ob rem evenit ut in momento cum ingentem usor petitionem immittit et ad certum coordinatoris elasticarum inquisitionem pervenit, nodi quidam longiores aliis respondent.

Et dum coordinator responsum ab omnibus nodis exspectat, cumulat eventus e nodi qui iam respondet. Pro GC, hoc significat quod acervus noster usus exemplaria celerrime mutant. Et GC quo usi sumus hoc negotium obire non potuimus.

Solum figmentum invenimus in hac condicione migrationis ad JDK13 mores botri invenimus et usum collectoris Shenandoah purgamentum. Hoc problema solutum est, coordinatores nostri cadere desierunt.

Hoc est, ubi problemata cum Java finivit et band latitudo quaestionum incepit.

"bacae" cum Elasticsearch: throughput

Botrus elasticas 200 TB+

Problemata cum throughput significant quod botrus noster stabiliter operatur, sed in cacumina, in numero documentorum inscriptorum et in decursione, effectus non sufficit.

Primum signum offendit: in nonnullis "explosiones" in productione, cum ingentem numerum lignorum subito generantur, indexing erroris exsecutionis in Graylog saepe emicare incipit.

Hoc ex eo quod in una data nodi thread_pool.write.queue, donec momentum elasticae investigationis processus indexing rogationis et informationes testae in orbe disci potest, tantum 200 petitiones per defaltam capere potest. Et in Documenta elastica Parum de hoc parametro dictum est. Tantum numerus maximus staminum et magnitudo defectus indicantur.

Scilicet, hunc valorem detorquere ac sequentia reperimus: nominatim in nostro proposito, usque ad 300 petitiones satis bene conditi, et pluris refert eo quod iterum in Plenam GC volamus.

Praeterea, cum hae batches epistularum quae intra unam petitionem veniunt, necesse erat ut Graylog tweak scriberet non saepe et in parvis batches, sed in batches ingentes vel semel in singulis secundis 3 si massa adhuc non integra est. Hoc in casu evenit ut notitias quas in Elastica investigatione scribimus non in duobus secundis sed in quinque (quod nobis satis convenit) evenit, sed numerus retrayorum quae faciendae sunt ut per magnas impellantur. ACERVUS notitia reducitur.

Hoc praesertim momenti est in illis momentis cum aliquid ingruat alicubi ac furiose de eo nuntiat, ut non omnino spammed elasticum accipias, et post aliquod tempus - Nodi Graylogi inexpediti sunt propter impeditos buffers.

Praeterea, cum easdem in productione explosiones haberemus, querelas a programmatibus et probatoribus accepimus: cum vero haec omnia opus essent, iis tardissime datae sunt.

Inceperunt ut viderit. Ex altera parte constabat quod tam inquisitionis quam quaestionis index et quaestionis essentialiter in eisdem machinis physicis discursum esse, et aliquo modo vel alio aliquas esse deductiones.

Sed hoc partim circumveniri potest ex eo quod in VI versionibus Elasticae quaestionis, algorithmus apparuit, qui permittit ut interrogationes distribuas inter notas notas datas non secundum principium temere rotundum-robin (continens quod primarium facit indexing et tenet. -shard valde occupatus esse potest, nullo modo cito respondebit), sed ut petat hanc instantiam minus oneratam cum replicatione testa, quae multo citius respondebit. Aliis verbis ad usum_adaptive_replica_selectionis pervenimus: verum.

Lectio pictura incipit spectare sic:

Botrus elasticas 200 TB+

Transitus ad hoc algorithmum effecit ut tempus interrogationis significanter emendare posset in iis momentis, cum magnum lignum ad scribendum habuimus.

Denique problema principale remotionem Mauris interdum sine dolore erat.

Quod voluimus de botro statim amisso dc uno nexu ;

  • Si magistrum currentem habebimus in centro notitiarum deficientium, tunc rursus seligatur et movebitur ut munus alteri nodi in alio DC.
  • Dominus omnes nodos inaccessos cito de botro removebit.
  • Ex reliquis, intelliget: in centro notitiarum perditarum tale et tale primarium habuimus shards, cito promovebit shards complementarias in reliquis notitiis centris, et perseveret index notitiarum.
  • Quam ob rem scripturae et lectionis perputium paulatim degradantur, generatim autem omnia, etsi lente, stabiliter operabuntur.

Cum evenisset, aliquid simile hoc voluimus;

Botrus elasticas 200 TB+

et sequentia assecuti sumus;

Botrus elasticas 200 TB+

Quomodo hoc factum est?

Mauris interdum cum cecidit, dominus noster bottleneck factus est.

Quid?

Re vera dominum TaskBatcher habet, qui responsabilis est ad certa officia et eventa in botro distribuenda. Quaelibet nodi exit, quaevis promotio testae a replica ad primarium, quodlibet munus testae alicubi creare - haec omnia primo ad TaskBatcher accedit, ubi sequentialiter et in uno filo processit.

Cum recessus unius centri notitiarum, evenit ut omnes nodi in notitia superstitibus centris censerent officium suum certiorem facere dominum "talia et tales schedas et nodos talium notitiarum amisimus."

Eodem tempore, nodi superstites notati, haec omnia ad dominum praesentem miserunt et exspectant confirmationem quam ille accepit. Hoc non exspectabant, cum dominus citius negotium accepisset quam respondere posset. Nodi intempestivos petitiones repetentes, et magister hoc tempore ne illis quidem respondere conabatur, sed in officio rogationum prioritate destinatus erat.

Forma terminalis, evenit ut nodi notitiae spammed dominum ad punctum GC in plenum iret. Post haec, dominus noster munus ad proximam nodi partem movit, idem omnino accidit, et per consequens botrus omnino corruit.

Mensuras cepimus, et ante versionem 6.4.0, ubi hoc fixum erat, satis erat nobis e notis nodis 10 notatis simul tantum e 360 ​​inclusis ut botrum penitus claudere.

Videbatur aliquid simile hoc;

Botrus elasticas 200 TB+

Post versionem 6.4.0, ubi fixa cimex terribilis, data nodi cessaverunt dominum occidere. Sed id non fecit eum "dolorem." Nimirum: cum 2 3 vel 10 (quovis numero praeter unum) datas nodes, magister aliquod primum nuntium accipit qui dicit quod nodi A reliquit, et nodi B, nodi C indicare conatur, nodi D.

Et in momento, hoc solum tractari potest, ut satagam de re aliqua narrare, aequalem circiter 20-30 secundis, et sic temperare celeritatem centrum datae e botro movendo.

In principio, hoc convenit in requisitis quae in principio exhibita sunt ad ultimam partem operis, sed ex parte "purae scientiae" est cimex. Quod obiter feliciter ab tincidunt in versione 7.2.

Praeterea, cum certa notitia nodi exivit, evenit ut pervulgandis informationibus de exitibus eius potior esset quam totam botrum narraret quod in eo essent talia et talia prima-shards (ut in alia notitia testaceum promoveret. trum in pri- et in informatione inscribi potuit).

Ergo cum omnia iam mortua sunt, nodi notitia dimissa non statim vetustate notatur. Proinde cogimur exspectare donec omnes pinges ad nodos emissi notitias opportuno, et solum postquam noster botrus incipit indicare nobis ibi esse, et illic opus est pergere notationes. De hoc legere potes hic.

Quam ob rem, operatio retrahendi centrum datae hodie nos accipit circiter hora 5 minuta in ruendo. Pro colosso tam magno et rustico, hoc satis bonum evenit.

Quam ob rem ad hoc consilium venimus;

  • Nodos notas habemus 360 cum 700 orbium gigabyte.
  • 60 coordinatores ad excitandas mercaturam per easdem nodos datas.
  • 40 magistri, quod legatum quoddam relictum cum versionibus ante 6.4.0 - ut superesset recessus centri notitiarum, animo parati eramus varias machinas amittere ut etiam in certo numero magistrorum haberemus. Maxime in re sem
  • Quaelibet tentamina ad partes iungendas in uno vase occurrerunt cum eo quod nodi serius vel citius sub onere frangerent.
  • Totus botrus utitur acervo.size 31 gigabytae: omnes conatus minuere magnitudinem quae consecutae sunt vel occidere aliquos nodos in quaestionibus gravibus quaerendi cum wildcard ducens vel ambitum ruptorem in ipsa Elastica investigatione acquirere.
  • Praeterea ad inquisitionem faciendam operam navare conati sumus numerum rerum in botro quam minimum retinere, ut quam maxime in bottleneck discamus quam maxime in domino processimus.

Denique de magna

Ut omnia haec opera ut destinata sunt, sequentia monentes erimus;

  • Singulae datae nodi nuntiant nostram nubem illam esse, et tales et tales in ea sunt crustae. Cum aliquid alicubi exstinguerimus, glomus refert post 2-3 secundas quas in centro A exstinximus nodi 2, 3, et 4; hoc significat quod in aliis centris notitiis nullatenus possumus exstinguere nodos illos in quibus una tantum testa est. supersunt.
  • Scientes naturam morum domini, numerum munerum pendentium diligentissime inspicimus. Quia etiam unum opus adhaesit, si tempus non vacat, speculatio in aliquo casu necessitatis fieri potest causa cur, exempli gratia, progressio pervalida in primario primario non operetur, unde indexing cessabit operari.
  • Etiam palam moras collectori inspicimus arctissime, quia magnas difficultates cum hac in optimizatione iam habuimus.
  • Rejicit filo intelligere in antecessum ubi est bottleneck.
  • Bene, norma metrica ut acervus, RAM et I/O.

Cum vigilantia aedifices, rationes Thread Pool in Elastica investigatione considerare debes. Documenta elastica configurationes optiones et valores defectus describit ad quaerendum et indicendum, sed omnino tacet de thread_pool.management. Hae filorum processus, speciatim, queries sicut cat/shards et alia similia, quae cum vigilantia scribentis commoda sunt. Quo maior glomerus, eo plura huiusmodi petitiones per unitatem temporis exsecuta sunt, et praefatae ossis administratio non solum in documentis officialibus non exhibetur, sed etiam per defectionem ad 5 staminum limitatur, quae celerrime disponuntur, post. quae magna operatur bene.

Quod in conclusione volumus dicere: fecimus! Nostri programmatores et tincidunt instrumentum dare potuimus quod, in omnibus fere rebus, notitias de rebus quae in productione fiunt, celeriter ac fideliter providere possunt.

Imo evenit ut admodum perplexa esset, sed tamen aptare cupimus ad res exsistentes, quas nobis repeciare et rescribere non habuimus.

Botrus elasticas 200 TB+

Source: www.habr.com