gpt4 book ai didi

windows - Mongodb 文件分配器需要更多时间

转载 作者:可可西里 更新时间:2023-11-01 11:28:20 27 4
gpt4 key购买 nike

当 mongodb 在数据目录下创建一个新文件时,它需要更多的时间来创建:

Line 376: Thu Jan 15 18:01:49.407 [FileAllocator] allocating new datafile >\data\db\test.3, filling with zeroes... Line 476: Thu Jan 15 18:03:55.650 [FileAllocator] done allocating datafile >\data\db\test.3, size: 512MB, took 126.242 secs

由于该节点无法与 mongodb 连接后出现以下错误。

{ "error":"{ err: 'connection to [localhost:27017] timed out' }","level":"error","message":"uncaught exception: ","timestamp":"2015-01-15T20:45:03.702Z"}

我的理解是这个错误来自 MongoMQ 库。我不确定我该如何处理。任何人都可以帮助解决这个问题。

最佳答案

Windows 答案

如果您使用的是 Windows 7 或 Windows Server 2008,可能适用于此的最明显的问题。这些操作系统的问题 (SERVER-8480),可以通过应用 this hotfix 来解决。意味着 MongoDB 分配的数据文件必须用零填充。

与普通方法相比,这是一个漫长的过程。不幸的是,即使安装了修补程序,版本 2.6 和 2.4 MongoDB 假设问题仍然存在于 Windows 7 或 Server 2008 上并且无论如何填充为零。 2.8+ 版本通过专门检测修补程序并恢复为非零填充来修复该问题。

为了让您了解其中的区别,下面是 Windows 7 上 2.8.0-rc5(检测修复)的示例日志行:

2015-01-22T16:56:51.749+0000 I STORAGE  [FileAllocator] done allocating datafile E:\data\db\280\test.2, size: 2047MB,  took 0.016 secs

下面是来自同一台机器的示例日志行,使用版本 2.6.5 执行相同的分配:

2015-01-22T16:47:33.762+0000 [FileAllocator] done allocating datafile E:\data\db\265\test.2, size: 2047MB,  took 112.071 secs

这是 112.071 秒对 0.016 秒。如果分配给您带来问题,Windows 8/2012 或 2.8+(一旦发布,当然安装了修补程序)似乎是解决问题的方法。

Windows 上 2.6.4 之前的 MongoDB 版本还有几个更常见的已知问题,最显着的是 SERVER-13729SERVER-13681已在 2.6.4 中解决。

其余问题正在 SERVER-12401 中跟踪并且依赖于 this hotfix来自 Microsoft 以改进操作系统对内存映射文件的刷新。不幸的是,该修补程序仅适用于 Windows 8 和 2012,还不适用于 Windows 7 和 2008。

因此,请确保您至少使用 2.6.4+,如果可能,请使用 Windows 8 或 2012。比较远程存储与本地磁盘上的任何性能以确定这是否是影响因素可能也很有帮助.

Linux 答案

(保留以防其他人在使用 Linux 时出现在这里)

如果您使用受支持的文件系统,这应该只需要几毫秒。我怀疑您正在使用其他东西(也许是 ext3?),或者可能使用的是非常旧的 Linux 版本。

支持的文件系统使用fallocate()分配数据文件,这是非常快的。如果不支持,则必须通过填充零来分配文件,这将花费很长时间。

即使是这样,用 126 秒从零填充一个 512MB 的文件也非常慢,这表明磁盘速度慢/损坏,或者超额订阅/饱和并且难以跟上。

如果您想评估 MongoDB 之外的分配,我已经为 pre-allocate data files for MongoDB 编写了一个小的 bash 脚本(用于测试目的),它使用上述 fallocate()并在我的测试系统上以毫秒为单位完成多个千兆字节。

关于windows - Mongodb 文件分配器需要更多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28082634/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com