我发誓,这在过去不是问题,我无法确定何时发生了变化。在我的本地开发环境中,如果我对我的模型/ Controller 进行任何更改,我的服务器至少需要 20-30 秒来重新加载和响应请求。这是 Rails 5.2.3 和 Thin 1.7.2。我不记得以前这么慢。仅供引用,我已经有了 config.cache_classes = false
,这显然是罪魁祸首。
这里有什么想法吗?
最佳答案
我已经为这个问题苦苦挣扎了一段时间,我似乎找到了两个值得尝试的解决方案。我运行 Rails 7.0.4 和 Puma 6.0。
在使用 rack-mini-profiler
调试后,我注意到 Thread::Mutex#synchronize
非常慢。 ~30 秒。所以我认为减少 Puma 线程的数量可能会有所帮助。它有所改善,但并没有完全解决我的问题。
为了单线程运行 Puma,我将以下内容放入我的 Procfile 中:
RAILS_MIN_THREADS=0 RAILS_MAX_THREADS=1 bin/rails s -p 3000
我遇到的问题似乎与 Puma 6.0.0 中的这个错误更直接相关,如下所述:https://github.com/ElMassimo/vite_ruby/issues/299和 https://github.com/jumpstart-pro/jumpstart-pro-rails/issues/475
降级到 5.6.5 完全解决了这个问题,我能够返回到多线程 Puma。
关于ruby-on-rails - 代码更改后,Rails 开发服务器需要很长时间才能重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59937524/