node.js - 为什么我必须不断重启我的 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% 的可靠性实现呢?
解决方案
推荐阅读
- python - Python - 为什么我的超时异常总是执行?
- javascript - 在 ReactNative 中使用滑块滚动水平滚动视图
- string - 模式匹配列表失败
- python - HackerRank 对所有隐藏的测试用例给出“错误答案”
- linux - 使用 rename 命令批量重命名文件
- react-native - 使用 react native firebase/ 自定义接收到的远程通知
- java - 重命名的图像不会出现在 imageView 中
- javascript - 从组中移除对象会从场景中移除对象
- javascript - 在 Sortable 组件中保存项目的位置
- java - 如何创建一个后台进程,它会在运行时禁用物理音量按钮