Firebase听众占用大量内存

我在Heroku上的应用程序旁边运行了一个节点工作程序,它监听我的Firebase数据库上的某些path。 问题是,听这些path似乎占用了大量的内存。 如果我在下面的path上听13000个项目的变化,如果我的Heroku服务器占用了总共147MB的内存:

setInterval => @ref.log_memory('Listener interval') , 1000 @ref.firebaseClient.child('listings').on 'child_changed', (snap) => @ref.log('child_changed') 

输出:

 22:39:07 worker.1 | info: Memory: 35mb total - 66mb rss - 23mb heapUsed 22:39:08 worker.1 | info: Memory: 36mb total - 67mb rss - 18mb heapUsed 22:39:09 worker.1 | info: Memory: 37mb total - 69mb rss - 23mb heapUsed 22:39:10 worker.1 | info: Memory: 54mb total - 72mb rss - 25mb heapUsed 22:39:11 worker.1 | info: Memory: 54mb total - 82mb rss - 33mb heapUsed 22:39:13 worker.1 | info: Memory: 147mb total - 186mb rss - 94mb heapUsed 22:39:14 worker.1 | info: Memory: 147mb total - 186mb rss - 94mb heapUsed 22:39:15 worker.1 | info: Memory: 147mb total - 186mb rss - 94mb heapUsed 22:39:15 worker.1 | info: child_changed 22:39:16 worker.1 | info: Memory: 147mb total - 186mb rss - 95mb heapUsed 22:39:17 worker.1 | info: Memory: 147mb total - 186mb rss - 95mb heapUsed 

如果Firebase在正常情况下会花费太多内存来查看path, 是因为它获取path中的所有项目并收听每个项目? 有什么办法可以解决这个问题吗?

Firebase会同步您侦听的位置(或查询中)的数据。 它将内存中该位置的所有活动数据的副本保留下来。

要减less内存使用量,请使用较less的数据来侦听一个位置。 或者使用查询(例如limitToLast() )来减less活动的数据量。

使用NoSQL数据库时,将活动数据与历史数据分开通常是一个好主意。 通过保持活动的数据集小,您可以减less许多操作的资源使用情况。 在您的情况下,不仅会减less您的Heroku服务器的内存使用量,而且还会减lessFirebase服务器上所需的内存/ CPU,这也将加速运行。