일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Vue
- 러스트 기초 학습
- 체인의정석
- SBT표준
- multicall
- 스마트컨트렉트프록시
- 스마트컨트렉트 예약어 함수이름 중복
- 스마트컨트렉트테스트
- 컨트렉트 동일한 함수이름 호출
- rust 기초
- ethers typescript
- 머신러닝기초
- ethers
- 스마트 컨트렉트 함수이름 중복
- ethers websocket
- vue기초
- ethers v6
- ethers type
- 스마트컨트렉트 함수이름 중복 호출
- 오블완
- 러스트 기초
- ambiguous function description
- Vue.js
- 러스트기초
- 티스토리챌린지
- 컨트렉트 배포 자동화
- 프록시배포구조
- chainlink 설명
- nest.js설명
- git rebase
- Today
- Total
체인의정석
Toobusy.js에 대하여 본문
오늘은 Toobusy.js를 사용해 보기 위한 서치를 해보았다.
https://www.npmjs.com/package/toobusy-js
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 (i < 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();
});
다른 업무가 급하게 생겨, 다음 시간에 이어서 적용해보도록 하겠다.
'개발 > backend' 카테고리의 다른 글
Jest 를 이용하여 파일 하나 테스트 (0) | 2021.09.06 |
---|---|
eslint plugin security 모듈 (0) | 2021.08.30 |
Restful API에 맞게 수정하기 (0) | 2021.08.05 |
Typescript) string을 받아와서 enum으로 고칠 경우 any를 안쓰고 타입체크하는 방법 (0) | 2021.07.30 |
Typescript nested class에서 에러, 예외 처리부분 validate 함수로 만들어서 빼기 (0) | 2021.07.30 |