ruby-on-rails 我可以在rails中读取file_store缓存文件的内容吗?

bmvo0sr5  于 5个月前  发布在  Ruby
关注(0)|答案(2)|浏览(43)

我们有一个生产应用程序正在变慢,其中一个嫌疑人是文件缓存。周期性地,我们看到巨大的file_store缓存文件,例如:

11044573 ./21D/AE1/menu_structure_5cb9b70e11e9b84ac9fa8412_super_admin

字符串
最左边的数字是块大小。如果我们清除缓存,应用程序重新生成相同的文件,它会更小:

-rw-r--r-- 1 deploy deploy 19K Oct 23 17:27 ./21D/AE1/menu_structure_5cb9b70e11e9b84ac9fa8412_super_admin


(they不同的格式B/c,它们是用不同的命令找到的,但第一个是巨大的,第二个是18 K)。一切正常,所以我们认为一定有一些奇怪的事情,大量的额外数据被有缺陷地存储在缓存文件中。有没有办法看看那里有什么,这样我们就可以调试为什么会发生这种情况?
谢谢你的帮助kevin

aoyhnmkz

aoyhnmkz1#

要读取缓存条目,请运行以下代码:

cache_entry_path = Rails.root.join('tmp', 'cache', '20B', 'EB0', 'Users') # replace it with your cache entry path
Rails.cache.send(:read_entry, cache_entry_path).value # it returns the deserialized entry value

字符串
我在Rails6和Rails7上测试了它,但是它不会在未来的版本中工作,因为它调用了一个私有方法。

vhipe2zx

vhipe2zx2#

我通过铁路源挖掘,这里的答案

cache_file_path = "tmp/cache/your_cache_file"
cache_entry = Marshal.load(File.read cache_file_path)
cache_entry.value

字符串

相关问题