流星是否使用Mongo Oplog?

时间:2016-08-17 16:47:15

标签: mongodb meteor

如何检查meteor是否正在使用我的mongo的oplog? 我有一群mongo并为我的流星设置了两个环境。

MONGO_URL=mongodb://mongo/app?replicaSet=rs0
MONGO_OPLOG_URL=mongodb://mongo/local?authSource=app

如何检查opt日志是否实际使用。 Meteor可以回退查询轮询效率非常低,但我想看看它是否与oplog一起正常工作。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

引用Meteor的OplogObserveDriver docs

中的相关位
  

如何判断您的查询是否使用了OplogObserveDriver

     

目前,我们只有粗略的方式来判断有多少observeChanges调用正在使用OplogObserveDriver,而不是调用它们。

     

这使用facts包,一个内部Meteor包,公开当前Meteor服务器的实时指标。在您的应用中,运行meteor add facts,然后将{{> serverFacts}}模板添加到您的应用中。如果您使用的是autopublish软件包,Meteor会自动将所有指标发布给所有用户。如果您未使用autopublish,则必须通过在服务器代码中调用Facts.setUserIdFilter告诉Meteor哪些用户可以查看您的指标;例如:

Facts.setUserIdFilter(function (userId) {
  var user = Meteor.users.findOne(userId);
  return user && user.admin;
});
  

(在本地运行您的应用时,Facts.setUserIdFilter(function () { return true; });可能已经足够了!)

     

现在看看你的应用。事实模板将呈现各种指标;我们正在寻找的是在mongo-livedata部分中的observe-drivers-oplog和observe-drivers-polling。如果observe-drivers-polling为零或根本没有渲染,则所有observeChanges调用都使用OplogObserveDriver!

答案 1 :(得分:2)

要设置oplog拖尾,您需要在 wb = createWorkbook() options("openxlsx.numFmt" = "0.00") # 2 decimal cases formating styleT <- createStyle(numFmt = "#,##0.00") # create thousands format addStyle(wb, sheetName, styleT, rows = 'yourrows',cols = 'yourcols', gridExpand = T, stack = T) # add thousands format to designated cols and rows 上设置user,在my_database设置oplog_user。然后,指定以下URI以连接到名为local的副本集(例如,如果有3个名为test-shard的主机:)

test-shard-[0-2]

在MongoDB Atlas上,他们需要MONGO_URL="mongodb://user:PASS@test-shard-0.mongodb.net:27017,test-shard-1.mongodb.net:27017,test-shard-2.mongodb.net:27017/my_database?ssl=true&replicaSet=test-shard&authSource=admin" MONGO_OPLOG_URL="mongodb://oplog_user:PASS@test-shard-0.mongodb.net:27017,test-shard-1.mongodb.net:27017,test-shard-2.mongodb.net:27017/local?ssl=true&replicaSet=test-shard&authSource=admin" ,并且所有用户都需要通过ssl=true数据库进行身份验证。在另一个部署中,您可以通过admin进行身份验证,在这种情况下,您要删除my_database的{​​{1}}并为authsource=adminMONGO_URL。有关其他示例,请参阅this post

使用MongoDB 3.6和Mongo节点驱动程序3.0+,您可以对DNS seedlist connections使用简洁的表示法,例如在MongoDB Atlas上,指定环境变量:

authsource=my_database

上面的链接说明了此注释如何填充MONGO_OPLOG_URLMONGO_URL="mongodb+srv://user:PASS@foo.mongodb.net/my_database" MONGO_OPLOG_URL="mongodb+srv://oplog_user:PASS@foo.mongodb.net/local" ssl参数。这比上面的长字符串好很多,也意味着你可以在不需要重新配置任何东西的情况下扩展你的副本设置。

正如hwillson所提到的,使用replicaSetauthSource个软件包(以前为facts-ui)来查看您的应用中是否有facts-base个运行。如果它们都是facts,那么oplog设置不正确。

答案 2 :(得分:1)

如果您使用Kadira APM监控应用程序的性能,您可以通过导航到“实时查询”部分并查看“Oplog通知”图表来查看oplog是否正常工作。

您可以在我的屏幕截图中看到oplog正在运行,因为值会显示在图表中(右下角)。如果oplog不起作用,则此图表将为空。

apm oplog chart ninjapixel meteor