Files
nodebestpractices/sections/performance/block-loop.basque.md
2021-03-19 19:05:17 +01:00

4.0 KiB

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 Clinicgo adibide bat begira dezagun

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

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

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