Hol*_*bæk 6 heroku node.js firebase
我有一个节点工作者在Heroku的应用程序旁边运行,它可以监听Firebase数据库上的某些路径.问题是听这些路径似乎占用了大量的内存.如果我在其中的13000个项目的路径上侦听更改,如果我的Heroku服务器占用总内存的147mb:
setInterval =>
@ref.log_memory('Listener interval')
, 1000
@ref.firebaseClient.child('listings').on 'child_changed', (snap) =>
@ref.log('child_changed')
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
如果Firebase会占用这么多内存来监听它,那么它是否正常?是因为它获取路径中的所有项目并侦听每个项目?有没有办法解决这个问题?
Firebase会同步您收听的位置(或查询中)的数据.它保留内存中该位置的所有活动数据的副本.
要减少内存使用量,请使用较少的数据收听位置.或使用查询(例如with limitToLast())来减少活动数据量.
使用NoSQL数据库时,通常最好将活动数据与历史数据分开.通过保持活动数据集较小,可以减少许多操作的资源使用.在您的情况下,它不仅可以减少Heroku服务器中的内存使用量,还可以减少Firebase服务器上所需的内存/ CPU,这也将加快操作速度.
| 归档时间: |
|
| 查看次数: |
1009 次 |
| 最近记录: |