我们正在计算GAE中的某些类型的请求:对于每个请求,servlet获取“通道”(计数器索引),并递增该通道和小时的计数器。我们使用分片计数器https://developers.google.com/appengine/articles/sharding_counters?csw=1
每小时一个cron作业运行,得到每个计数器的计数,将其存储在一个更有效的结构中,如果计数远低于前一天,则触发警报。
这个过程已经成功运行了一段时间,但是最近我们有一个案例严重不足(许多频道有50%和更多的不足,其中很多都有几千个)。我能够通过日志和引用计数识别出此时的预期请求数量和计数器增量,并且问题是计数不足(在get()操作中对分片或其他地方进行求和)。
是否有任何合理的情况会发生这样的问题?