【发布时间】:2016-02-19 16:51:38
【问题描述】:
我有一个 Node.js 应用程序,它通过 Websocket 连接接收数据并将每条消息推送到 Azure Redis 缓存。它将持久的消息数组存储在一个变量中以供下游使用,并定期从缓存中同步该数组。有点复杂,但稍后我想将写入缓存的应用程序的一半与从中读取的应用程序的一半分开..
在格林威治标准时间 02:00 左右,根据 Azure 门户统计数据,我似乎已经开始在同步时收到“缓存未命中”,这持续了几个小时,然后我在 05 年左右的某个时间再次开始收到“缓存命中” :00。
缓存未命中对应于 CPU 使用率的突然增加,在 05:00 左右达到峰值。当我说峰值时,我的意思是它达到了 81%,而之前的最大值约为 6%。
所以在 05:00 左右的某个时间,CPU 达到峰值,然后又恢复正常,“缓存未命中”消失了,但是查看缓存内存使用情况,我从使用的大约 37.4mb 下降到大约使用的 3.85mb(其中我怀疑是“空”状态),并且此应用程序正在使用的列表已清空。
应用程序对缓存运行的唯一函数是 LPUSH 和 LRANGE,没有任何功能可以删除数据,如果有人想知道,当 CPU 加速内存使用时,没有什么可以删除的表明出现了恶意添加的数据。
它只在基本计划中,所以我不期望它是无懈可击的或任何东西,但即使没有标准计划的复制功能,我也预计它不会完全自我清除 -我的印象是,Redis 会定期将自身写入磁盘,并在从错误中恢复时从中恢复。
所有这些都是我的提问方式:
有人知道这里可能发生了什么吗?
如果这是其他人能够意外触发自己的事情,我是否应该注意其他使用相同缓存的应用程序中可能会导致灾难性失败的陷阱?
我会欢迎一大群人告诉我标准计划不会受到此类问题的影响,因为我已经为此付出了代价,如果觉得那是正确的就好了打电话。
提前非常感谢..
【问题讨论】:
标签: node.js azure azure-redis-cache