标签: mongodb

MongoDB 虚拟内存使用情况

我正在测试 MongoDB 的档案数据。我们有一个包含 160M 行的集合。MongoDB 实例在 12 Gb 物理内存盒上占用 76.2 Gb 虚拟内存;-) 交换为 null。

我读到虚拟内存 = 物理 + 交换。

我的情况有什么问题?这是 mongoDB 本身的问题吗?

谢谢

top mongodb

5
推荐指数
1
解决办法
9620
查看次数

我应该使用 Ubuntu 的存储库还是 MongoDB 的私有存储库安装 MongoDB?

我正在阅读 MongoDB 安装说明,并注意到他们有一个私有存储库,说明告诉您添加。我想知道这是否真的需要,因为 MongoDB 也在 Ubuntu 存储库(Ubuntu 12.04)中。我在想,与 Ubuntu 相比,他们发布到自己的仓库可能更容易吗?但我真的不确定。只是想知道是否有人可以对此有所了解。

ubuntu mongodb apt

5
推荐指数
1
解决办法
889
查看次数

同一服务器上的多个 MongoDB 实例

我们在 CentOS 6.3 上设置了一个MongoDB开发服务器,并且能够通过使用单独的配置文件和 rc 脚本来分离不同的项目。现在我们正在考虑设置 MongoDB 生产环境。

我读过不建议在生产中的同一台服务器上托管多个 MongoDB 实例。 这是否意味着每个项目都需要自己的生产 MongoDB 环境?

这些项目不是非常“大”,因此不需要很多资源,所以感觉就像我们通过为每个项目提供自己的主机来跳枪。也许我们只需要摆脱 RDBMS 的世界。

我们将监控我们的开发服务器以了解它的运行情况,但我正在寻找一些见解和一些您自己的个人经验来补充我所阅读的内容。

linux centos mongodb

5
推荐指数
1
解决办法
5363
查看次数

我应该在生产机器中禁用关闭 MongoDB 分析器吗?

根据[1]的默认值是当执行时间> 100ms时收集配置文件数据

但问题之一是当大多数查询的执行时间 > 100 毫秒时,我们的系统开始过载,我不确定分析器是否使我们的系统更加繁忙。

我正在考虑禁用或设置一个较大的值,例如 2 秒。好像默认的 100ms 太小了?

[1] http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/

mongodb

5
推荐指数
2
解决办法
1959
查看次数

MongoDB 和 ZFS 性能不佳:磁盘总是忙于读取而只做写入

我在使用 ZFSonlinux 的 MongoDB(我相信它是 mmapped DB)时遇到了巨大的性能问题。

我们的 Mongodb 几乎只写。在没有 ZFS 的副本上,磁盘完全忙于大约 5 秒的峰值,当应用程序每 30 秒写入一次数据库时,并且中间没有磁盘活动,因此我将其作为比较的基准行为。
在具有ZFS副本,盘完全是忙碌所有的时间,与副本有点吃力跟上与MongoDB的主。我在所有副本上都启用了 lz4 压缩,并且节省的空间很大,因此访问磁盘的数据应该少得多

所以在这些 ZFS 服务器上,我首先使用默认的 recordsize=128k。然后我在重新同步 Mongo 数据之前擦除了数据并设置了 recordsize=8k。然后我再次擦拭并尝试recordsize = 1k。我也试过 recordsize=8k 没有校验和

尽管如此,它并没有解决任何问题,磁盘始终保持 100% 忙碌。仅在记录大小= 8k 的一台服务器上,磁盘比任何非 ZFS 副本忙得多,但是在尝试不同的设置并再次尝试记录大小= 8k 后,磁盘为 100%,我看不到以前的良好行为,并且在任何其他副本上也看不到它。

此外,应该几乎只有写入,但看到在不同设置下的所有副本上,磁盘完全忙于 75% 的读取和仅 25% 的写入

(注意,我相信 MongoDB 是 mmapped DB。有人告诉我在 AIO 模式下尝试 MongoDB,但我没有找到如何设置它,并且在另一台运行 MySQL InnoDB 的服务器上,我意识到 ZFSonLinux 无论如何都不支持 AIO。)

我的服务器是 CentOS 6.5 内核 2.6.32-431.5.1.el6.x86_64。spl-0.6.2-1.el6.x86_64 zfs-0.6.2-1.el6.x86_64

#PROD 13:44:55 root@rum-mongo-backup-1:~: zfs list
NAME                     USED  AVAIL  REFER  MOUNTPOINT
zfs                      216G  1.56T …
Run Code Online (Sandbox Code Playgroud)

zfs mongodb zfsonlinux

5
推荐指数
3
解决办法
6271
查看次数

MongoDB Oplog 安全性

我们正在使用 MongoDB 副本集来共享 Web 场中的会话和其他(可能敏感的)数据。

我们存储的所有数据都使用 TTL 索引在相对较短的时间段(例如一小时)后使文档过期,部分原因是出于安全原因。

但是,我突然想到,即使从 MongoDB 集合中删除数据,用于复制的 oplog 仍将包含所有创建(然后删除)的文档;然后可以轻松地从 oplog 中读取所有过期的数据。

根据分配给 oplog 的大小,其中的数据可能很旧。

我的问题是,这里的最佳实践是什么?除了大幅减少 oplog 的大小,我们还能做些什么来防止旧数据被访问?

security logging mongodb log-rotation

5
推荐指数
1
解决办法
183
查看次数

Mongo 辅助节点卡在启动状态

我有一个 MongoDB 副本集,其辅助节点不会超过 STARTUP 状态。数据库很大,但他们现在应该已经转移到 STARTUP2。正确的端口是打开的,因为我可以从主连接到辅助连接,反之亦然。

replication database-replication mongodb

5
推荐指数
1
解决办法
6417
查看次数

无法使用 MongoDB 3 配置副本集

我正在尝试在 MongoDB 3.04 版中创建副本集。我遵循本教程并在尝试使用主服务器添加节点时遇到下一个错误:

vacrep:PRIMARY> rs.add('server address here')
{
    "ok" : 0,
    "errmsg" : "Quorum check failed because not enough voting nodes responded;
     required 2 but only the following 1 voting nodes responded: PRIMARYSERVER:27017; 
     the following nodes did not respond affirmatively: 'server address here':27017 
     failed with Missing credentials for authenticating as internal user",
     "code" : 74
}
Run Code Online (Sandbox Code Playgroud)

这是到目前为止所做的:

  1. 使用 MongoDB 3.04 安装 3 个服务器
  2. 使用 repSet 模式运行所有 MongoDB 实例
  3. 使用此方法验证服务器之间的连接
  4. 在主服务器中启动一个副本)

我发现有关此错误的线程很少,但在其中任何一个中都找不到解决方案。我该如何解决这个问题?

replication mongodb replica-set

5
推荐指数
1
解决办法
2万
查看次数

为什么使用 MongoDB 代替 etcd 作为键值存储是一个好主意还是一个坏主意?

我想从社区中获得关于为什么 MongoDB 的键/值会或不会是 etcd 或其他专门构建的键/值存储系统(consol、zookeeper 等)的合适替代品的一般想法。

mongodb zookeeper etcd consul

5
推荐指数
1
解决办法
2278
查看次数

MongoDB rs.initiate 错误:replSetInitiate 仲裁检查失败,因为并非所有提议的集合成员都做出肯定响应

我必须使用 X.509 证书启用内部身份验证来启动我自己的副本集,但我失败了。欢迎任何建议。

Debian 8.2 x64 上的 MongoDB 3.2 x64。

这是 MongoDB 大学课程“M310:MongoDB 安全性”中的一个问题。

一位导师:

您可以使用身份验证选项启动您的服务器成员,然后使用 rs.initiate,然后创建您的用户。

我有这个文件夹结构:

~
`-- shared
    `-- certs
        |-- ca.pem
        |-- client.pem
        `-- server.pem
Run Code Online (Sandbox Code Playgroud)

我创建了这个 bash 脚本来设置我的副本集:

#!/bin/bash

course="M310"
exercise="HW-1.3"
workingDir="$HOME/${course}-${exercise}"
dbDir="$workingDir/db"
logName="mongodb.log"

ports=(31130 31131 31132)
replSetName="rs1"

host=`hostname -f`
initiateStr="rs.initiate({
                 _id: '$replSetName',
                 version: 1,
                 members: [
                  { _id: 0, host: '$host:${ports[0]}' },
                  { _id: 1, host: '$host:${ports[1]}' },
                  { _id: 2, host: '$host:${ports[2]}' }
                 ]
                })"

# create working folder
mkdir -p "$workingDir/"{r0,r1,r2}

# launch …
Run Code Online (Sandbox Code Playgroud)

authentication x509 mongodb

5
推荐指数
1
解决办法
5106
查看次数