`

纯粹日记

阅读更多

      这几天搞的很累,一个是轮询的那个问题,莫明其妙的少了一条数据,还是一个偶现的问题,当时搞的很头大,搞了几天却发现是因为轮询的时候对外部容器参数做了删除,导致放入缓存里面的数据少了一条。

     后来又出了一个问题,当时为了一个需求把一个定时的缓存改成了一个永久缓存,新加了一个键值对,在开发,SDV测试的时候都没有发现问题,到了现网测试环境上莫明其妙的找不到数据,log4j是error日记,也找不出相关的问题,又不能远程调试,本地环境上又重现不了问题,感觉像是浑身长刺的刺猬,没法下口。后来找了一个同事一起定位这个问题,因为代码上看不出问题,而我们的改动是把定时缓存改成了永久缓存,永久缓存不会去当数据找不到时就不会再去数据库取数据,所以初步怀疑是数据量太多,数据被冲掉了,但是当时做需求的时候,涉及到我们需求的那个新的键值对只有20条左右的数据,感觉可能性又不大。后来同事放了一张jsp页面上去证实了这个想法。原来是我们把原先的作家信息缓存改成永久缓存之后,老的键值对是一个数据量很庞大的数据,大概又20w左右,因为原先的时候做的是定时失效缓存,失效或者找不到数据会去找一遍数据,所以不会出现问题,但是改成永久缓存之后,却不去找数据了,而且老的键值对的查找是用后台线程找的,而新的键值对是初始化的时候刷的,导致新的键值对被冲掉了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics