MongoDB莫名崩溃的问题定位与解决纪实

MongoDB莫名崩溃的问题定位与解决纪实

国庆之前发布的软件版本一直运行正常,国庆之后,测试同事跑自动化测试脚本,发现该软件频繁异常,通过查看log发现,该软件使用的MongoDB崩溃了。

该软件是个Windows的桌面软件,由于需要存储大量数据,会后台启动MongoDB,并以此作为数据存储库。

报错信息

## error 1
[thread1] WiredTiger error (16) [1697520288:390687][8764:140707646429280], log-server: __win_fs_rename, 125: D:\data5\mongodb\data\journal\WiredTigerTmplog.0000000002 to D:\data5\mongodb\data\journal\WiredTigerPreplog.0000000001: file-rename: MoveFileExW: 另一个程序正在使用此文件,进程无法访问。\r\n: Resource device Raw: [1697520288:390687][8764:140707646429280], log-server: __win_fs_rename, 125: D:\data5\mongodb\data\journal\WiredTigerTmplog.0000000002 to D:\data5\mongodb\data\journal\WiredTigerPreplog.0000000001: file-rename: MoveFileExW: 另一个程序正在使用此文件,进程无法访问。\r\n: Resource device

## error 2
2023-10-12T15:17:52.032+0800 W  FTDC     [ftdc] Uncaught exception in 'FileRenameFailed: 另一个程序正在使用此文件,进程无法访问。' in full-time diagnostic data capture subsystem. Shutting down the full-time diagnostic data capture subsystem.

原因分析

  • 这是mongodb的数据目录里面的文件,按理其他程序不会去操作这些文件,难道是因为启动了多个mongod进程?

措施:重启电脑,重新运行软件,结果还是会有这个报错

  • 已发布版本,国庆之前都正常,而且从来没出现过这个error,莫非是系统有啥升级?

咨询IT,反馈系统没有升级

  • mongodb bug?

直觉和理性告诉我,应该不是,不然为啥国庆节前没有出现过,节后频繁出现。

类似案例查找

一顿搜索。。。结果99.99999%都是无用信息,直到在mongodb社区发现这篇帖子
Mongod random crashes on Windows: FileRenameFailed

社区工作人员回复:
Sorry you’re having difficulty with this issue, but unfortunately I believe the error FileRenameFailed originated from outside the server, so it’s typically an OS level issue.这句话基本印证了我的猜想,不是mongodb的问题,也不是我的软件问题

再继续。。看到最后个回复,
I just had the same issue with mongodb 4.4.22. I enabled file auditing on windows and it appears Kaspersky is to blame: 卡巴斯基是罪魁祸首!!!我电脑没装卡巴斯基,但是装了“腾讯安全管家”,欣喜若狂呀,赶紧把安全管家退出了!!!

但,高兴的有点早,测试下来mongodb还是会报错,一样一样的。

不过,这个回答还是给了有用信息,I enabled file auditing on windows,如果能监控下是哪个软件占用了程序,就知道是谁在搞事情!

问题是,怎么监控呢?

监控文件被哪些软件读写

  • 通过本地组策略编辑器 修改 审核策略,访问文件都增加审核
  • “本地组策略编辑器” 怎么打开呢,win+r,输入gpedit.msc,回车

报错:gpedit.msc不存在!!!又是一顿搜索,windows家庭版默认不开启gpedit.msc。。。

  • 安装gpedit.msc,powershell运行如下命令:
Get-ChildItem -Path "C:\Windows\servicing\Packages\*" |
Where-Object{
   ($_.Name -like "Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum")`
-or ($_.Name -like "Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum")} |
foreach {
   dism.exe /online /norestart /add-package:$_}
  • 修改审核策略

计算机配置->Windows 设置 -> 安全设置 -> 本地策略 -> 审核策略 -> 审核对象访问

修改审核策略

在这里插入图片描述

  • 添加待审核文件夹

选中D:\data5\mongodb\data\journal目录,右键->属性->安全->高级->审核->添加,添加Everyone -> 应用,保存
在这里插入图片描述

  • 查看“事件查看器”中的审核日志

windows 搜索直接搜索“事件查看器”即可,Windows日志->安全,选中任意一条事件,就能看到事件详细信息,如下图所示:
在这里插入图片描述

  • 搜索被占用的文件名,看看这个文件被哪些软件占用了(也就是触发了访问审核的,有审核日志的),在事件查看器中按Ctrl+F搜索文件名

  • 终于找到了罪魁祸首!这个奇怪的exe再读写mongodb的文件!!!!
    在这里插入图片描述

  • 这是啥呢?找IT,IT说这是公司的安全管理软件。。。。得了,终于找到证据了,IT同事你上吧。。

  • 最后IT同事通过修改这个软件的配置信息,忽略mongodb文件夹的读写规避了这个问题。

参考资料

后言

  • 要理性分析,并相信自己的专业判断。
  • 别人说的话,不要全信,如果你怀疑,那要拿出证据来,不然别人不会承认的。
  • 证明自己没错很难,证明是别人的错,更难。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-26 09:42:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-26 09:42:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-26 09:42:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-26 09:42:01       18 阅读

热门阅读

  1. 面试 Vue 框架八股文十问十答第十一期

    2024-01-26 09:42:01       26 阅读
  2. 考研机试 阶乘的和

    2024-01-26 09:42:01       31 阅读
  3. 五种单例模式

    2024-01-26 09:42:01       27 阅读
  4. Midjourney 生成图片教程

    2024-01-26 09:42:01       48 阅读
  5. C++(1) 命名空间

    2024-01-26 09:42:01       34 阅读
  6. 牛刀小试 - C++ 推箱子小游戏

    2024-01-26 09:42:01       38 阅读
  7. Android - 持久化方案

    2024-01-26 09:42:01       29 阅读
  8. MOJO中导入python模块

    2024-01-26 09:42:01       31 阅读
  9. 人工智能相关的政策文件都有哪些?--九五小庞

    2024-01-26 09:42:01       34 阅读
  10. Git管理秘籍:Python项目中的.gitignore策略

    2024-01-26 09:42:01       29 阅读
  11. Git命令总结

    2024-01-26 09:42:01       40 阅读
  12. PyTorch中self.layers的作用

    2024-01-26 09:42:01       29 阅读
  13. linux常用基础命令最新版

    2024-01-26 09:42:01       29 阅读