You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js脚本命令行可连MongoDB,Cron执行时连接超时

Ubuntu服务器Cron执行Node.js脚本连接本地MongoDB超时问题

问题现象

  • 命令行执行node <脚本名>时,Node.js脚本可正常连接本地MongoDB;通过Cron执行相同命令时,出现连接超时,耗时近30秒,且dbInstance为undefined。
  • 日志显示DB_URL输出正常,原使用mongodb://usr:pwd@localhost:27017连接串,改用公网域名连接串mongodb://usr:pwd@my-domain:27017后,Cron执行恢复正常。

相关代码

const mongodb = require("mongodb").MongoClient;
const env = require("dotenv").config({
    path: "../.env",
}).parsed;

async function dbConnection() {
    let url = env.DB_URL;
    
    console.log("DB_URL", url);

    let opts = {
        useNewUrlParser: true,
        useUnifiedTopology: true
    };

    try {
        return mongodb.connect(url, opts);
    } catch (err) {
        throw err;
    }
}

async function DataLoading() {
    try {
        let dbInstance;
        try {
            dbInstance = await dbConnection()
            if(!dbInstance)
                throw "DB connection failed"
        } catch (err) {
            errors.push({
                date: new Date().toISOString(),
                error: err,
                location: "Db connection" 
            });
        }
        console.log("Time elapsed: " + (new Date() - time) )
        let dbStocks = dbInstance.db(env.DB_NAME).collection("stocks")
        // 剩余业务代码省略
    } catch (err) {
        // 全局错误处理省略
    }
}

Cron配置

00 22 * * 1-5 cd /path/to/scripts/folder && node script.js >> cronErrors.txt

mongod.conf配置

# network interfaces
net:
  bindIp: 127.0.0.1, 127.0.0.2, <my-domain.com>, localhost
  port: 27017
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongo.pem

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

security:
  authorization: 'enabled'

问题原因分析

Cron的执行环境与用户命令行环境存在差异:

  1. Cron环境的hosts解析可能存在异常,导致localhost无法正确映射到MongoDB绑定的127.0.0.1地址;
  2. 或者MongoDB的TLS配置在Cron环境下,对localhost的证书验证逻辑存在问题,而使用公网域名时证书验证正常通过。

改用公网域名连接串后,域名解析能正确指向MongoDB绑定的地址,同时TLS证书验证匹配,因此连接恢复正常。

内容的提问来源于stack exchange,提问作者hello-there

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 05:03:32