【问题标题】:Rails cache Permission Denied when cache is very large缓存非常大时Rails缓存权限被拒绝
【发布时间】:2016-11-30 02:00:51
【问题描述】:

我的应用程序使用了广泛的 Rails 缓存,所有缓存键都由同一个应用程序创建和使用,该应用程序对缓存文件夹具有完全权限。

但是,有时当缓存变得特别大(在缓存过期窗口内使用率大幅上升)时,我在使用 Rails.cache.fetch 访问缓存片段时开始出现权限错误:

Permission denied @ unlink_internal

清除缓存“修复”问题,直到它再次变大。这种缓存的大小是否存在理论上的限制,或者是否有其他原因?

【问题讨论】:

    标签: ruby-on-rails caching


    【解决方案1】:

    事实证明,我对原因的评估是错误的。我有一些任务以提升的权限运行,因此它们的缓存键是用提升的权限写入的,并且由于缓存文件夹是随机生成的,最终来自“主应用程序”的缓存键会尝试在那里写入并且不能由于权限。确保同一用户运行所有相关任务解决了该问题。

    【讨论】:

    • 你能解释一下“提升的权限”吗?
    • @KazimZaidi 抱歉,计划任务正在操作系统上以 root 身份运行,或者至少以 sudo 用户身份运行。 “运行”主 ruby​​ 实例的用户权限较低,并且由于在文件系统上进行了片段缓存,因此由于文件权限,他们无法写入或删除过期片段,从而导致致命错误。
    猜你喜欢
    • 2016-06-13
    • 2012-03-04
    • 2019-06-13
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2016-02-15
    • 2019-08-15
    • 2019-09-07
    相关资源
    最近更新 更多