mongoose 连接超时参数

luoyjx · 2016-12-05 10:41 · 1608次阅读

最近在项目中经常发生登录卡死的状况,由于是使用的passport单点登录,所以只能一步步排查,加日志。

最后发现是卡在一个mongodb查询那里,后来去官网查询后,发现查询超时时间默认是无限大的,所以导致我们看到的现象是http无返回,导致http超时了,因此nginx报502错误。

找到了mongoose文件的Connection部分,在下面可以看到有一些连接参数,其中就有socketTimeoutMS和connectTimeoutMS,点击进入mongodb官方文档,可以看到Server的参数中,socketTimeoutMS默认是无限大的,这在连接外网mongodb时可能导致一些问题,我们需要加上超时参数。

var options = {
    server: { 
      socketOptions: {
        autoReconnect: true,
        connectTimeoutMS: 10000,
        socketTimeoutMS: 10000,
      },
    },
  }

// Good way to make sure mongoose never stops trying to reconnect
mongoose.connect(uri, options);

有待观察后补充


尝试后发现,这个socketTimeout和socket变成时的设置timeout是一个效果,闲置超时时间,但是在linux下似乎没有什么不正常,在windwos上就是启动后,过了这个时间就会抛出一个timeout错误。

收藏

很不错

@cloudy 黄总…

登录后可以进行评论。没有账号?马上注册