Answers:
lockedLoadData机制需要减少服务器上的负载。
以前,当在高负载站点上清除配置缓存时,所有客户端都会生成相同的信息,从而显着增加cpu / io负载。
使用lockedLoadData,只有一个客户端将生成缓存,而其他客户端将等待它。
有关其工作方式的更多详细信息。
第一个函数调用“获取数据”回调,如果它获取数据而不是返回数据(因此,如果数据在缓存中,则代码的工作方式与以前相同,并且不使用任何锁)。
如果数据不可用并且锁已锁定,则在循环中,我们尝试加载数据,直到数据将被获取或锁被删除为止。
如果没有锁,那么我们创建一个锁并生成数据,并将其保存在缓存中,然后删除该锁并返回数据
PS:我们将这些更改作为补丁发送给了一个负载高达20kRPM的客户端,并且至少可以工作3个月,没有任何问题。因此,可能是您的自定义/模块中的问题(例如,如果它们破坏了缓存机制)