我有一个 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 定期将自身写入磁盘并在从错误中恢复时从中恢复的印象。
所有这些都是我的提问方式:
有谁知道这里可能发生了什么?
如果这是其他人能够意外触发自己的事情,我是否应该注意其他使用相同缓存的应用程序中可能会导致灾难性失败的问题?
我会欢迎一群人告诉我标准计划不会受到此类问题的影响,因为我已经为此付出了代价,如果觉得那是正确的选择,那就太好了。
提前谢谢了..