gpt4 book ai didi

mongodb - 如何使用 pollingThrottle 和 pollingInterval?

转载 作者:可可西里 更新时间:2023-11-01 10:21:48 24 4
gpt4 key购买 nike

所以我的应用程序中有一些不需要立即响应的东西,我在文档中找到了属性 pollingThrottleMspollingIntervalMs。所以这里基本上是关于我设法找到的那些属性的所有信息:

pollingIntervalMs Number (Server only) How often to poll this query when observing on the server. In milliseconds. Defaults to 10 seconds.

pollingThrottleMs Number (Server only) Minimum time to allow between re-polling. Increasing this will save CPU and mongo load at the expense of slower updates to users. Decreasing this is not recommended. In milliseconds. Defaults to 50 milliseconds.

所以第一个问题 - 我不太清楚这些属性之间的区别是什么,也许有人可以向我解释一下? (pollingThrottleMs 是订阅更新的一种速率限制,而 pollingIntervalMs 是我们检查更新的频率,据我所知)另外 pollingIntervalMs 默认是 10s?真的吗?那为什么特性的名字里有Ms呢?这是不对的。

然后我尝试像这样在我的查询中设置这些属性:

Meteor.publish("currentRoom", function (roomName) {
return Rooms.find({name: roomName}, {
pollingThrottleMs: 5000,
pollingIntervalMs: 5000
});
});

我预计一个客户端的更新与另一个客户端的响应更新之间有 5 秒的延迟,但它似乎根本不起作用。我什至在 observe 中设置了断点,它会立即得到通知。难道我做错了什么?它是如何工作的?

最佳答案

那 10 秒应该是 10 毫秒。

  1. 请确保您只更新 MongoDB 而不是 Minimongo - 例如,如果您通过 Meteor 方法进行更新,请确保您没有客户端 stub 。

  2. 试试这个:

    Meteor.publish("currentRoom", function (roomName) {
    return Rooms.find({name: roomName}, {
    disableOplog: true,
    pollingThrottleMs: 10000,
    pollingIntervalMs: 10000
    });
    });

您必须禁用 oplog 拖尾。如果不这样做,每次 MongoDB 日志更改时您仍然会收到通知。

我与客户端的观察者一起测试了它,它有效。

Cursor.observe({
changed: (newdoc, olddoc) => {
console.log('changed');
}
});

附加信息:

https://github.com/meteor/docs/blob/version-NEXT/long-form/oplog-observe-driver.md http://info.meteor.com/blog/tuning-meteor-mongo-livedata-for-scalability

关于mongodb - 如何使用 pollingThrottle 和 pollingInterval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38661193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com