Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用程序调用了副本集中的哪个Mongo实例?_Java_Mongodb - Fatal编程技术网

Java 应用程序调用了副本集中的哪个Mongo实例?

Java 应用程序调用了副本集中的哪个Mongo实例?,java,mongodb,Java,Mongodb,我有一个Java应用程序,它使用Mongo副本集。副本集由不同主机中的两个Mongo实例(主和辅助)组成 假设应用程序正在执行查询(例如,在集合中查找文档)。我不知道它用什么。还假设主实例和次实例存储相同的数据 现在,我需要知道应用程序调用了哪个Mongo实例来执行查询:主实例、次实例或两者 我该怎么做 我更喜欢一种不需要访问应用程序代码的解决方案。默认的读取首选项是主选项,因此如果您没有更改它,它就是读取的位置。您如何知道应用程序正在运行的查询?你怎么知道要找什么?您可以检查日志,但如果两个应

我有一个Java应用程序,它使用Mongo副本集。副本集由不同主机中的两个Mongo实例(主和辅助)组成

假设应用程序正在执行查询(例如,在集合中查找文档)。我不知道它用什么。还假设主实例和次实例存储相同的数据

现在,我需要知道应用程序调用了哪个Mongo实例来执行查询:主实例、次实例或两者

我该怎么做


我更喜欢一种不需要访问应用程序代码的解决方案。

默认的读取首选项是主选项,因此如果您没有更改它,它就是读取的位置。

您如何知道应用程序正在运行的查询?你怎么知道要找什么?您可以检查日志,但如果两个应用程序访问不同的读取首选项,则会发生什么情况?您可以增加mongod日志的详细程度。在某个级别,它将开始将所有查询转储到日志中。这是一个起点。@SergioTulentsev谢谢。恐怕更改日志级别需要重新启动Mongo。如果我改用评测呢?谢谢。假设我不知道使用了什么样的阅读偏好。假设我也无法访问源代码。如何找到副本集中调用的Mongo实例?您必须像上面提到的那样搜索日志。你到底想找什么?也许有更好的方法可以做到这一点。简而言之,我有一个应用程序,它可以针对Mongo副本集工作。看起来像是应用程序。使用最近的读取优先级进行查询。但是,它似乎调用了主数据中心而不是次数据中心,尽管主数据中心位于另一个数据中心,而次数据中心位于同一个数据中心。这就是整个故事…是的,你可能只需要跟踪日志来验证。您可以从驱动程序获取此类信息,但这需要在代码中进行一些操作。您可以使用查找处理给定查询的服务器。不过,在分片集群中,您可能会得到奇怪的结果,因为可能涉及多个服务器。