5

我最近更改了我的服务器设置以包含一个副本集。辅助数据库位于世界各地的多个区域以减少延迟。问题是我认为所有读取都是从主服务器而不是从辅助服务器完成的。我在远离主数据库的服务器上看到 500 毫秒以上的 newrelic 延迟,但与主数据库位于同一区域的登台服务器约为 20 毫秒。如何检查辅助读取或最近读取是否正常工作,或者我的设置是否缺失/错误?(我已经尝试过 SECONDARY_PREFERRED 和 NEAREST)

网址:

mongodb://1.1.1.1:27017,1.1.1.2:27017,1.1.1.3:27017,1.1.1.4:27017,1.1.1.5:27017/mydatabase

我的选项如下所示:

"replSet": {
   "rs_name": "myRepSet"
   "readPreference": "ReadPreference.SECONDARY_PREFERRED",
   "read_preference": "ReadPreference.SECONDARY_PREFERRED",
   "slaveOk": true
}

猫鼬版本:3.8.x

4

3 回答 3

3

根据项目问题,当升级到最新版本时gitHub读取首选项似乎不起作用(mongoose@3.8.1 & mongodb@1.3.23),因为所有读取都是从主服务器而不是从辅助服务器完成的。

根据评论,当您回滚到旧版本(mongoose@3.6.4 & mongodb@1.2.14)时,不会出现此问题,读取将开始进入辅助节点(集合级别)。此问题应在version 3.8.7.

请参考以下问题:

https://github.com/Automattic/mongoose/issues/1833 https://github.com/Automattic/mongoose/issues/1895

于 2015-07-16T07:16:12.047 回答
1

如何检查辅助读取或最近读取是否正常工作,

如果您可以访问您的机器,检查正在查询哪些机器的简单方法是使用mongostat. 只需登录您的一台服务器并运行

mongostat --discover

这将为您提供副本集中每台机器上正在运行的插入/查询/更新/删除的基本输出。如果你有一个安静的系统,很容易看到查询被重定向到哪里,这样你至少可以知道你的辅助服务器是否被击中。

如果不是,您将需要调查您的驱动程序设置。

于 2015-07-14T23:47:46.970 回答
0

你可以用最近的选项检查而不是次要的。我想这应该可行。检查此链接。 http://docs.mongodb.org/manual/reference/read-preference/#nearest

于 2015-07-14T22:21:43.140 回答