체인의정석

Toobusy.js에 대하여 본문

개발/backend

Toobusy.js에 대하여

체인의정석 2021. 8. 27. 16:23
728x90
반응형

오늘은 Toobusy.js를 사용해 보기 위한 서치를 해보았다.

https://www.npmjs.com/package/toobusy-js

 

toobusy-js

Don't fall over when your Node.JS server is too busy. Now without native dependencies!

www.npmjs.com

Node-Toobusy

What happens when your service is overwhelmed with traffic? Your server can do one of two things:

  • Stop working, or...
  • Keep serving as many requests as possible

This library helps you do the latter.

 

서비스에서 트래픽이 많이 나올 때 선택지는 2가지가 있다고 한다. 첫번째는 작업을 멈추는 것, 그리고 두번째는 가능한 한 최대의 요청을 처리하는 것이다.

 

How it works

toobusy polls the node.js event loop and keeps track of "lag", which is long requests wait in node's event queue to be processed. When lag crosses a threshold, toobusy tells you that you're too busy. At this point you can stop request processing early (before you spend too much time on them and compound the problem), and return a "Server Too Busy" response. This allows your server to stay responsive under extreme load, and continue serving as many requests as possible.

 

작동 방식은 다음과 같다. node.js에 이벤트 루프를 두고 "lag"를 추적한다. 만약 "lag"가 임계점을 넘긴다면 toobusy가 현재는 too busy한 상황이라는 것을 전달하고 사용자는 Server Too Busy 응답을 리턴받게 된다. 한마디로 요청이 특정시점에 많아지면 서버가 현재 바쁘다는 응답을 주어서 현재 처리해야 할 일 먼저 처리히하도록 만들어 주는 모듈이라고 볼 수 있다.

 

설치 및 사용 방안은 다음과 같다.

installation

npm install toobusy-js

usage

var toobusy = require('toobusy-js'),

    express = require('express');

 

var app = express();

 

// middleware which blocks requests when we're too busy

app.use(function(req, res, next) {

  if (toobusy()) {

    res.send(503, "I'm busy right now, sorry.");

  } else {

    next();

  }

});

 

app.get('/', function(req, res) {

  // processing the request requires some work!

  var i = 0;

  while (< 1e5) i++;

  res.send("I counted to " + i);

});

 

var server = app.listen(3000);

 

process.on('SIGINT', function() {

  server.close();

  // calling .shutdown allows your process to exit normally

  toobusy.shutdown();

  process.exit();

});

 

다른 업무가 급하게 생겨, 다음 시간에 이어서 적용해보도록 하겠다.

728x90
반응형
Comments