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

时间:2016-09-27 15:02:15

标签: node.js express pm2 morgan

我在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

格式为:method :url :status :response-time ms - :res[content-length] according to the Morgan docs

我注意到的一件事是,当服务器无法正常工作时,日志记录会使用-字符代替状态,响应时间和内容长度。我常常看到-的内容长度;它是当服务器以304响应时会发生什么。虽然我没有看到-的响应时间或状态,尽管搜索(谷歌和这里都是SO)我还是不清楚这究竟意味着什么(引擎盖下)。

有谁知道这种地位不足意味着什么?如果它有一个很好理解的含义,我是否会犯这样的错误导致这种情况?

3 个答案:

答案 0 :(得分:3)

根据问题报告hereGET / - - ms - -实质上意味着“在Node.js因为空闲时间过长而终止TCP连接之前,您从未发送过响应”。

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

答案 1 :(得分:0)

我会尝试用简单的术语来解释可能的原因,因为我在某个时候也遇到了同样的问题。问题是,对于代码中的某个条件,“res.send”行没有被执行。因此,客户端正在等待的响应正在超时。因此,在记录器中,它显示/ GET文档 - - ms - - 因为我们没有发送任何响应。

答案 2 :(得分:0)

在Windows上,对于node.js,我发现了类似的问题,原因是阻止了防火墙。在允许通过私有和公开两种方式使用node和node.js应用程序后,解决了。