Node.js摩根日志中没有请求状态



我在Azure VM上运行node.js应用程序(与PM2处理负载平衡和重新启动)。下面是服务器设置和日志代码:

var logger = require('morgan');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(flash());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/api/v01', api.router);
app.use('/api/v02', apiv2.router);

在过去的一天左右,我们开始有很多问题连接到网站。需要重新加载几次才能显示任何数据。

我一直在查看日志,想弄清楚发生了什么事。我没有看到任何错误,但是有相当多的这种事情的实例:

WebApp-2 GET /portal - - ms - -
WebApp-3 GET /portal - - ms - -
WebApp-2 GET / - - ms - -
WebApp-2 GET / - - ms - -

这些似乎与人们无法浏览页面的情况一致。当一切正常工作时,日志看起来更像这样:

WebApp-3 GET / 302 16.532 ms - 58
WebApp-3 GET /portal 200 335.192 ms - 5239

根据Morgan文档,格式为:method :url :status :response-time ms - :res[content-length]

我注意到的一件事是,当服务器没有真正工作时,日志记录用-字符代替状态、响应时间和内容长度。我习惯看到-的内容长度;当服务器响应304时就会发生这种情况。我从来没有见过-的响应时间或状态,尽管搜索(谷歌和这里)我不清楚这到底是什么意思(在引擎盖下)。

有谁知道缺乏地位意味着什么吗?如果它有一个很好的理解的意思,我犯了什么错误会导致这个结果吗?

根据这里的问题报告,GET / - - ms - -本质上意味着"在Node.js因空闲时间过长而杀死TCP连接之前,您从未发送过响应"。

检查以确保每个请求都发送了响应。

我将尝试用简单的术语解释可能的原因,因为我以前也遇到过同样的问题。问题是,对于代码中的特定条件,"res.send"行没有被执行。因此,正在客户端等待的响应将超时。因此,在日志记录器中,它显示/GET docs - - ms - -,因为我们没有发送任何响应。

在windows上,对于node.js,我发现了类似的问题,原因是阻止防火墙。在允许node和node.js应用通过私有和公共方式之后,它解析了。

最新更新