首页 > 解决方案 > 为什么我必须不断重启我的 AWS ec2 实例

问题描述

我有一个 nodejs 应用程序,我在 ec2 实例上的 ubuntu 服务器上运行。该应用程序的代码就是这样......

app.listen(port, () => {
    HorseRacingAPI()
    FootballAPI()
    AmericanFootballAPI()

    setInterval(() => {
        HorseRacingAPI()
    }, 1000 * 120)

    setInterval(() => {
        FootballAPI()
    }, 1000 * 120)

    setInterval(() => {
        AmericanFootballAPI()
    }, 1000 * 120)
})

这 3 个函数中的每一个都向 API 发出请求,重新组织返回的数据,然后将数据发送到 mongodb。

当我在我的计算机上运行它时,它工作得很好,有时一个功能可能会在 1% 的时间内失败,但它会在 2 分钟后再次运行并正常工作。但是,当我在 ec2 实例上运行它时,几个小时后,ec2 实例失败并且不会再次运行 nodejs 应用程序,直到我重新启动实例并重新启动 pm2 服务器。

pm2 日志看起来像这样......

0|server   |     at Timeout.<anonymous> (/home/ubuntu/TPL-SCRAPI/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:197:23)
0|server   |     at listOnTimeout (internal/timers.js:557:17)
0|server   |     at processTimers (internal/timers.js:500:7)
0|server   | MongooseError: Operation `oddsmatchers.updateMany()` buffering timed out after 10000ms
0|server   |     at Timeout.<anonymous> (/home/ubuntu/TPL-SCRAPI/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:197:23)
0|server   |     at listOnTimeout (internal/timers.js:557:17)
0|server   |     at processTimers (internal/timers.js:500:7)
0|server   | MongooseError: Operation `oddsmatchers.updateMany()` buffering timed out after 10000ms
0|server   |     at Timeout.<anonymous> (/home/ubuntu/TPL-SCRAPI/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:197:23)
0|server   |     at listOnTimeout (internal/timers.js:557:17)
0|server   |     at processTimers (internal/timers.js:500:7)
0|server   | MongooseError: Operation `oddsmatchers.updateMany()` buffering timed out after 10000ms
0|server   |     at Timeout.<anonymous> (/home/ubuntu/TPL-SCRAPI/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:197:23)
0|server   |     at listOnTimeout (internal/timers.js:557:17)
0|server   |     at processTimers (internal/timers.js:500:7)

有什么我做错了吗?我需要这段代码基本上永远运行,那么我需要做什么才能以 100% 的可靠性实现呢?

标签: node.jsamazon-ec2pm2

解决方案


推荐阅读