【发布时间】:2018-09-12 01:45:19
【问题描述】:
尝试调试缓存未命中的原因。在 config/environments/production.rb 中,我们将资产回退为 true:
config.assets.compile = true
每隔一段时间,我们就会看到 CPU 激增,罪魁祸首是 nodejs,我们认为它是由于这条线而被解雇的(当出现失误时它正在编译资产)。当资产丢失时,有没有办法记录到生产日志或它自己的日志中,这样我们就可以弄清楚为什么它没有被添加到预编译轨迹中?
感谢您的帮助, 凯文
【问题讨论】:
-
如果资产是预编译的,它应该由您的网络服务器(nginx、apache 等)交付,如果 rails 必须编译它,那么它应该出现在生产日志中。但是您将缓存与预编译混合在一起,这是不同的事情。建议在生产环境中禁用资产编译,如果某些资产未预编译,则网络服务器将响应未找到状态代码(它将出现在网络服务器错误日志中)。
-
这是我凭经验知道的。如果我将该配置标志设置为 false,则在丢失资产时会得到 500。如果我把它变成真的,我偶尔会得到一些巨大的 nodejs 进程。我相信正在发生的事情是 100% 的资产没有被预编译,触发未命中,触发 nodejs 重新编译。我最初的问题是,我如何检测这种错过何时发生?
-
这个问题应该改写成“有没有办法记录预编译未命中”?
-
请求错误记录在 Web 服务器错误日志中(nginx?apache?如果您不知道错误日志在哪里,请检查您网站的站点启用配置)
标签: ruby-on-rails asset-pipeline