diff --git a/README.basque.md b/README.basque.md index 2451baab..4f3845d6 100644 --- a/README.basque.md +++ b/README.basque.md @@ -1066,13 +1066,13 @@ edo hornitzaileen lainoko zerbitzuak

-## ![✔] 7.1. Ez blokeatu gertaeraren begizta +## ![✔] 7.1. Ez blokeatu gertaeren begizta -**TL;PL:** saihestu PUZen zeregin intentsiboak, gertaeraren begizta blokeatuko baitute. Izan ere, gertaera horietako gehienak azpiprozesu bakarrekoak dira, eta deskargatuak izango baitira azpiprozesu dedikatu batean, prozesu batean edo teknologia desberdinetan, dauden testuinguruaren arabera +**TL;PL:** saihestu PUZen zeregin intentsiboak, gertaeren begizta blokeatuko baitute. Izan ere, gertaera horietako gehienak azpiprozesu bakarrekoak dira, eta deskargatuak izango baitira azpiprozesu dedikatu batean, prozesu batean edo teknologia desberdinetan, dauden testuinguruaren arabera -**Bestela:** gertaeraren begizta blokeatuta dagoenez, Node.jsk ezin izango du beste eskaera bat kudeatu eta, ondorioz, atzerapena eragin diezaieke erabiltzaileei. **3000 erabiltzaile erantzunaren zain daude, edukia zerbitzatzeko prest dago, baina eskaera bakar batek emaitzak berriro bidaltzea galarazten dio zerbitzariari** +**Bestela:** gertaeren begizta blokeatuta dagoenez, Node.jsk ezin izango du beste eskaera bat kudeatu eta, ondorioz, atzerapena eragin diezaieke erabiltzaileei. **3000 erabiltzaile erantzunaren zain daude, edukia zerbitzatzeko prest dago, baina eskaera bakar batek emaitzak berriro bidaltzea galarazten dio zerbitzariari** -🔗 [**Gehiago irakurri: ez blokeatu gertaeraren begizta**](/sections/performance/block-loop.md) +🔗 [**Gehiago irakurri: ez blokeatu gertaeren begizta**](/sections/performance/block-loop.basque.md)


diff --git a/sections/performance/block-loop.basque.md b/sections/performance/block-loop.basque.md new file mode 100644 index 00000000..7a16fa19 --- /dev/null +++ b/sections/performance/block-loop.basque.md @@ -0,0 +1,53 @@ +# Ez blokeatu gertaeren begizta + +

+ +Nodek gertaeren begizta nagusiki hari bakarraren barruan kuadeatzen du, hainbat ilaren artean txandakatuz. Konplexutasun handiko ekintzak, json fitxategi handien sintaxi analisiak, logikaren erabilera array oso handietan, seguruak ez diren expresio erregularren kontsultak eta sarrera/irteera operazio garrantzitsuak gertaeren egintza geldiaraztea eragin dezakete. Sahiestu PUZarentzat zeregin intentsibo hauek zerbitzu kontsakratu batean (adibidez ataza zerbitzaria) egitea eta sahiatu Worker Pool erabiliaz zeregin luzeak pauso txikietan banatzea, hauexek, gertaeren begizta blokeatzea ekiditeko moduetako batzuk dira. + +### Adibidea: gertaeren begiztan blokeatua izan + +[Node Clinic](https://clinicjs.org/documentation/doctor/05-fixing-event-loop-problem)go adibide bat begira dezagun + +```javascript +function lokartu(ms) { + const etorkizuna = Date.now() + ms; + while (Date.now() < etorkizuna); +} + +server.get("/", (req, res, next) => { + lokartu(30); + res.send({}); + next(); +}); +``` + +Aplikazio honen frogak egitean, 'while' komandoak sortutako latentzia ikusiko dugu + +### Exekutatu frogen segida + +`clinic doctor --on-port 'autocannon localhost:$PORT' -- node slow-event-loop` + +### Emaitzak + +``` +┌────────────┬────────┬────────┬────────┬────────┬────────────────┬──────────┬───────────┐ +│ Statistika │ 2.5% │ 50% │ 97.5% │ 99% │ Baztazbestekoa │ Stdev │ Max │ +├────────────┼────────┼────────┼────────┼────────┼────────────────┼──────────┼───────────┤ +│ Latentzia │ 270 ms │ 300 ms │ 328 ms │ 331 ms │ 300.56 ms │ 38.55 ms │ 577.05 ms │ +└────────────┴────────┴────────┴────────┴────────┴────────────────┴──────────┴───────────┘ +┌────────────┬────────┬────────┬────────┬────────┬────────────────┬──────────┬───────────┐ +│ Statistika │ 1% │ 2.5% │ 50% │ 97.5% │ Baztazbestekoa │ Stdev │ Min │ +├────────────┼────────┼────────┼────────┼────────┼────────────────┼──────────┼───────────┤ +│ Req/Sec │ 31 │ 31 │ 33 │ 34 │ 32.71 │ 1.01 │ 31 │ +├────────────┼────────┼────────┼────────┼────────┼────────────────┼──────────┼───────────┤ +``` + +## Gertaeren begiztatzearen irudia + +![Gertaeren begiztatzea](/assets/images/event-loop.png "Gertaeren begiztatzea") + +> Hemen dago oinarrizko arau bat zure Node zerbitzaria azkarra izaten mantentzeko: Nore azkarra da edozein momentutan bezero bakoitzarekin duen elkarlana "txikia" denean. +> [Ez blokeatu gertaeren begiaztatzea (edota atazen begiaztatzea) | Node.js](https://nodejs.org/en/docs/guides/dont-block-the-event-loop/) + +> Gehiengo batek huts egiten du beren lehenengo NodeJS aplikazioak egiterako orduan, gertaeren begiaztatzea, erroreen kudeaketa eta asinkronoaren inguruko kontzeptuak ez ulertzeagatik. +> [Gertaeren begiaztatzearen jarraibide egokiak — NodeJS gertaeren begiaztatzea, 5.partea](https://jsblog.insiderattack.net/event-loop-best-practices-nodejs-event-loop-part-5-e29b2b50bfe2)