
node.js 서버에서 요청이 삭제되었습니다. 시스템 설정에 문제가 있을 정도로 테스트 사례를 단순화했습니다. 저는 개발자이고 서버 관리에 대한 경험이 거의 없으므로 분명한 사실을 놓치고 있는 것 같습니다. 서버는 Ubuntu의 MEAN에 대한 표준 설정을 갖춘 Digital Ocean에 있습니다. 서버 설정에서는 크게 변경되지 않았습니다. 어디를 봐야 할까요?
다음은 노드 서버 코드입니다(실행 중인 실제 코드입니다).
var http = require('http'),
express = require('express'),
path = require('path');
var app = express();
var rcount=0;
app.use(function(req, res, next) {
console.log('--'+rcount+':'+req.protocol+'://' + req.headers.host + req.originalUrl);
rcount++;
next();
});
app.use('/js',express.static(path.join(__dirname, 'public/js'), {maxAge: 86400000}));
http.createServer(app).listen(9876, function(){
console.log('Express server listening on port 9876');
});
포위 공격 중에 일어나는 일은 다음과 같습니다(길이가 길어서 죄송하지만 사진을 보려면 필요합니다). 서버 측의 로거는 Express가 시간 초과된 요청을 수신하지 않았음을 보여줍니다. 테스트 환경에는 프록시 등이 없으며 노드는 표시된 대로 9876에서 직접 실행됩니다.
MacBook-Air-alex:www alex$ siege -iv http://xxx.xxx.xxx.xxx:9876/js/animatescroll.js
** SIEGE 3.0.7
** Preparing 15 concurrent users for battle.
The server is now under siege...
HTTP/1.1 200 0.10 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.11 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.11 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.12 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.12 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.10 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.11 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.11 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.14 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.12 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.11 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.10 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.12 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.12 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.10 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.11 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.14 secs: 7686 bytes ==> GET /js/animatescroll.js
[error] socket: 209698816 connection timed out.: Operation timed out
[error] socket: 212381696 connection timed out.: Operation timed out
[error] socket: 208089088 connection timed out.: Operation timed out
[error] socket: 207015936 connection timed out.: Operation timed out
[error] socket: 209162240 connection timed out.: Operation timed out
HTTP/1.1 200 0.14 secs: 7686 bytes ==> GET /js/animatescroll.js
[error] socket: 208625664 connection timed out.: Operation timed out
[error] socket: 205942784 connection timed out.: Operation timed out
[error] socket: 206479360 connection timed out.: Operation timed out
[error] socket: 205406208 connection timed out.: Operation timed out
[error] socket: 211308544 connection timed out.: Operation timed out
[error] socket: 210771968 connection timed out.: Operation timed out
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.14 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.15 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.11 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.40 secs: 7686 bytes ==> GET /js/animatescroll.js
[error] socket: 210235392 connection timed out.: Operation timed out
HTTP/1.1 200 0.19 secs: 7686 bytes ==> GET /js/animatescroll.js
[error] socket: 204869632 connection timed out.: Operation timed out
HTTP/1.1 200 0.11 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.16 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.16 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.17 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.10 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.12 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.14 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
[error] socket: 211845120 connection timed out.: Operation timed out
HTTP/1.1 200 0.12 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.12 secs: 7686 bytes ==> GET /js/animatescroll.js
HTTP/1.1 200 0.13 secs: 7686 bytes ==> GET /js/animatescroll.js
답변1
데이터센터 문제였습니다. 다른 데이터 센터에서 서버 복사본을 실행하여 진단했습니다.
나는 불평조차 하지 않았고, 내가 알아냈을 때쯤에는 문제가 해결되었습니다. 3일이 소요되었습니다. 고마워요, 디지털오션!