随便写一句,以免有跟我一样的人遇到这个问题。

驱动版本:MongoDB C# Driver 1.7.0

当在Master/Slave集群上使用Eval的时候,Eval操作只会在Master结点上运行,无论你设置的readPreference是secondaryPreferred还是secondary。理由很简单,Eval中的JS并不是在客户端(即驱动中)解释执行,而是在MongoDB中。所以当驱动收到一条Eval命令的时候并不知道具体是要干什么,所以无法判断应该把这个请求发给master还是slave去执行。为了保证执行顺利,驱动总是把这样的命令发给Master执行。这点我个人认为值得商榷。至少应该给我个机会指定使用Master还是Slave,否则所有Eval都会跑到Master上,增加了Master的压力,违背了做Master/Slave的初衷。

明白这点以后,如果在程序中发现"not master"的错误,就不会无法理解了。这是因为Eval发送到了Master上,而Master因为压力过大无法接受新的请求导致不能接受请求,因此请求可能被转发到Slave节点上,导致报了Not Master错误(一说是Master正在进行角色转换变成Slave,不过据我观察应该我说的原因可能性比较大)。这里极有可能是驱动的Bug,但还未确认。因为既然会把请求转到Slave节点上,那readPreference=secondary/secondaryPreferred配置就应该起作用。

Eval is Devil-MongoDB master/slave上运行Eval遇到的问题的更多相关文章

  1. mongodb - Master Slave Replication

    master-slave复制模式大多场景下都被replicat sets代替.官方也建议使用replicat sets. master-slave复制不支持自动failover. master-sla ...

  2. Jenkins Master/Slave架构

    原文:http://www.cnblogs.com/itech/archive/2011/11/11/2245849.html 一 Jenkins Master/Slave架构 Master/Slav ...

  3. MySQL的Master/Slave群集安装和配置

    本文介绍MySQL的Master/Slave群集安装和配置,版本号安装最新的稳定版GA 5.6.19. 为了支持有限HA.我们用Master/Slave读写简单孤立的集群.有限HA这是当Master不 ...

  4. 记录一个奇葩的问题:k8s集群中master节点上部署一个单节点的nacos,导致master节点状态不在线

    情况详细描述; k8s集群,一台master,两台worker 在master节点上部署一个单节点的nacos,导致master节点状态不在线(不论是否修改nacos的默认端口号都会导致master节 ...

  5. Mongodb集群——master/slave

    集群的配置 (本测试放于同一台机器进行配置,所以IP地址一样,如果是在不同的服务器上更换IP便可以)   1.目录结构       拷贝两份mongodb到/home/scotte.ye/mongo1 ...

  6. MongoDB学习笔记——Master/Slave主从复制

    Master/Slave主从复制 主从复制MongoDB中比较常用的一种方式,如果要实现主从复制至少应该有两个MongoDB实例,一个作为主节点负责客户端请求,另一个作为从节点负责从主节点映射数据,提 ...

  7. 转】MongoDB主从复制实验 master/slave

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/4/ 感谢! Posted: May 31, 2013 Ta ...

  8. 在Docker和Kubernetes上运行MongoDB微服务

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟.容器是完全使用沙箱机制,相互之间不会有任何接 ...

  9. win7 64位下 mongodb安装及命令运行

    有网友老催我把框架加上mongodb的支持,于是偶尔抽空看了看相关的文章. 今天有缘,就把mongodb安装了一下,中间遇到了小小的问题,So,把整个过程记录一下: 1:先上官网:http://www ...

随机推荐

  1. jQuery 的append在ie下的兼容性

    $("body").append("<div id='ajaxLoadDiv'><span><img src='images/ajaxLoa ...

  2. mssqlserver 批量插入示例

    public bool DoQuestionSqlBulkCopy(DataTable dtDoQuestion,             string DoQuestionName,         ...

  3. (medium)LeetCode 207.Course Schedule

    There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...

  4. 50. Pow(x, n) (编程技巧)

    Implement pow(x, n). double sum = 1; if (n > 0) { while ((n--) > 0) sum *= x; return sum; } el ...

  5. javaSE学习博客与笔记

    equals和==的区别 Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,do ...

  6. docker错误

     错误:cannot enable tty mode on non tty input 错误产生: root@machine1:/data# echo test|docker exec -i 68 ...

  7. Fiddler抓包工具的使用

    下载 自行去官网下载 http://www.telerik.com/fiddler 配置Fiddler 1.打开Fiddler, Tools-> Fiddler Options -> HT ...

  8. 互联网行业都缺前端工程师-最高offer薪水38k*16

    摘要:现在,几乎整个互联网行业都缺前端工程师,不仅在刚起步的创业公司,对上市公司乃至巨头这个问题也一样存在.没错,优秀的前端工程师简直比大熊猫还稀少. 现在,几乎整个互联网行业都缺前端工程师,不仅在刚 ...

  9. 设置.Net多线程默认CultureInfo

    .net编码过程中,当我们新开一个线程时,其默认的CurrentCulture属性为当前系统的Culture,在软件的本地化没有完成的情况下,采用默认系统的文化编码方式,可能会导致软件在界面显示,数字 ...

  10. 在 mvc 中使用下拉列表

    在mvc中经常会使用到下拉列表,以下以两种方式来实现,一种是以  @Html.DropDownList 扩展方法,一种是以 <select><option></optio ...