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文件夹的读写规避了这个问题。

参考资料

  • Mongod random crashes on Windows: FileRenameFailed
  • Complete Guide to Windows File System Auditing - Varonis

后言

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT+QGIS跨平台编译】之十二:【libpng+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文件目录 一、libpng介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libpng介绍 PNG(Portable Network Graphics,便携式网络图形),是一种采用无损压缩算法的位图格式,支持索引、灰度、RGB三种颜色方案以及Alpha通道等特性。 PNG使用从LZ77派生的无损数据压缩算…

Java类加载器

什么是类加载器? 1.1类加载器 作用 负责将.class文件(存储的物理文件)加载在到内存中 需要有个人把我们写的java文件编译后的字节码文件搬运到虚拟机上 1.2类加载的完整过程 1.2类加载的完整过程 类加载时机 简单理解:字节码文件什么时候…

网络协议与攻击模拟_09部署DHCP服务器

一、部署DHCP服务器 Windows server部署DHCP服务器 1、虚拟机网络架构理解 Vmware里面不同的虚拟机可以设置相同的Vmnet网络,也可以设置不同的Vmnet网络。两台虚拟机设置相同的Vmnet1网卡,可以看作为使用虚拟交换机将两台Vmnet1的虚拟机连接起来的。 …

java学习之路(1)-隐藏桌面图标从CMD命令中打开软件

1.找到文件所在路径: 2.将文件路径添加到环境变量中 3.winr 打开cmd 输入命令(目录后面的QQScLauncher.exe) 直接可以打开QQ软件,删除桌面图标,别人就找不到了,只能通过cmd命令或者是找到安装包所在位置 …

微服务入门篇:Eureka注册中心(作用,搭建Eureka客户端和服务端)

目录 1.提供者与消费者2.Eureka的作用3.搭建EurekaServer1.配置服务端2.配置客户端3.复制实例操作4.服务拉取 1.提供者与消费者 ①服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务) ②服务消费者:一次业务中,调用其它微…

docker的资源限制(cgroup)

前瞻 Docker 通过 Cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面, 基本覆盖了常见的资源配额和使用量控制。 Cgroup 是 ControlGroups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 CPU、…

雪亮工程视频智能监控方案,助力打造全方位、多层次视频监管体系

随着科技的不断发展,视频监控已经成为城市安全防范的重要手段之一。为了提高城市安全防范水平,各地纷纷开展“雪亮工程”,即利用视频智能监控技术,实现对城市各个角落的全方位、全天候监控。本文将介绍一种雪亮工程视频智能监控方…

Shell脚本⑤函数与数组

一.函数 封装的可重复利用的具有特定功能的代码 格式: 方法一: [function] 函数名 (){ 命令序列 [return x] #使用return或者exit可以显式的结束函数 } 方法二: 函数名(){ 命令序列 } 1.函数的调用方法 (1&…

Tensorflow2.0笔记 - tensor排序操作

本笔记主要记录sort,argsort,以及top_k操作,加上一个求Top K准确度的例子。 import tensorflow as tf import numpy as nptf.__version__#sort,argsort#对1维的tensor进行排序 tensor tf.random.shuffle(tf.range(10)) print(tensor) #升序 print("tf.sort(d…

纯血鸿蒙来了,企业开发者应该关注什么

2024年对于鸿蒙来说是一个里程碑,鸿蒙将正式对外发布 HarmonyOS NEXT 5.0,而此前传言的系统将不再对开发者层面兼容Android等消息将成为定论。 为什么鸿蒙能有这个底气?因为研究机构TechInsights发布预测报告称,华为HarmonyOS将在…

【Chrome】浏览器怎么清除缓存并强制刷新

文章目录 1、正常刷新:正常刷新网页,网页有缓存则采用缓存。 F5 或 刷新键2、强制刷新:忽略缓存刷新,重新下载资源不用缓存。 CtrlF5 或 ShiftF5 或 CtrlShiftR3、在浏览器的设置里面清除所有数据

基于 Docker 搭建 Uptime-Kuma 一个极简风的应用监控

GitHub:https://github.com/louislam/uptime-kuma 一、uptime-kuma 介绍 Demo:https://uptime.wuhanjiayou.cn/ uptime-kuma 是一款开源的监控工具, 支持 TCP / PING / HTTP 等多种监控方式,可监测网站,数据库,Docker…

OpenHarmony—类型转换仅支持as T语法

规则:arkts-as-casts 级别:错误 在ArkTS中,as关键字是类型转换的唯一语法,错误的类型转换会导致编译时错误或者运行时抛出ClassCastException异常。ArkTS不支持使用语法进行类型转换。 当需要将primitive类型(如num…

使用Spring Boot和Tess4J实现本地与远程图片的文字识别

概要: 在本文中,我们将探讨如何在Spring Boot应用程序里集成Tess4J来实现OCR(光学字符识别),以识别出本地和远程图片中的文字。我们将从添加依赖说起,然后创建服务类以实现OCR,最后展示如何处理…

C++:组合、继承与多态

面向对象设计的重要目的之一就是代码重用,这也是C的重要特性之一。代码重用鼓励人们使用已有的,得到认可并经过测试的高质量代码。多态允许以常规方式书写代码来访问多种现有的且已专门化了的相关类。继承和多态是面向对象程序设计方法的两个最主要的特性…

小程序 样式 WXSS

文章目录 样式 WXSS尺⼨单位样式导⼊选择器⼩程序中使⽤less 样式 WXSS WXSS( WeiXin Style Sheets )是⼀套样式语⾔,⽤于描述 WXML 的组件样式。 与 CSS 相⽐,WXSS 扩展的特性有: 响应式⻓度单位 rpx样式导⼊ 尺⼨单位 rpx (…

基于frp工具实现内网穿透,跨局域网远程SSH登录

文章目录 一.概述1.1 为什么要内网穿透?1.2 什么是frp? 二.frp安装管理流程2.1 frp下载2.2 部署2.3 通过systemd系统服务管理启动程序 三.frp配置测试(通过SSH访问内网机器C)3.1 服务端配置文件frps.toml修改3.2 客户端配置文件fr…

tcp/ip分层模型

文章目录 tcp/ip分层模型封装和分用 tcp/ip分层模型 上面这个图主要介绍了osi七层模型和tcp/ip五层模型(有的资料上说的是tcp/ip四层模型,把物理层算在了硬件设备上,这篇文章还是按照五层模型来讲)。但osi七层模型实现起来比较复杂…

代码随想录算法训练营第16天 | 104.二叉树的最大深度, 111.二叉树的最小深度 ,222.完全二叉树的节点个数

二叉树理论基础: https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 104.二叉树的最大深度 题目链接:https://leetcode.cn/problems/maximum-depth-…

【TCP】传输控制协议

前言 TCP(Transmission Control Protocol)即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。它由IETF的RFC 793定义,为互联网中的数据通信提供了稳定的传输机制。TCP在不可靠的IP层之上实现了数据传输的可…