gpt4 book ai didi

ruby-on-rails - jRuby with Rails 4的好处

转载 作者:行者123 更新时间:2023-12-03 13:04:35 27 4
gpt4 key购买 nike

我目前正在考虑迁移到jRuby,但仍不确定一切如何工作,但让我们考虑一下这种假设情况。
user 1加载我的应用程序中的页面大约需要2.5秒,而执行时大约500msuser 2尝试打开另一个页面,该页面需要1秒的加载时间。

如果我的估计是正确的,那么如果您以单个过程在MRI中运行它,将会发生以下情况:

  • 用户1等待2.5秒,以便其页面加载
  • 用户2等待3秒等待页面加载(等待2秒等待用户1完成页面加载,等待1秒等待页面完成渲染)

  • 我的估计正确吗?

    假设我在jRuby下运行相同的应用程序,就会发生这种情况:
  • 用户1等待2,5秒等待其页面加载
  • 用户2等待1或更多秒,但少于3秒,具体取决于用户1的请求占用
  • 的内存/CPU量

    我的其他估计正确吗?当然,假设您的代码是线程安全的。如果我的估计是不正确的,请纠正我,或者如果它是正确的,我是否需要确保在Rails应用程序级别上设置了一些配置,还是我应该注意除线程安全代码以外的其他事项?

    更新

    我刚刚完成了一个小型的jRuby POC应用程序,使用了莺莺的 gem 来构建war文件,并将war部署到了Tomcat Web服务器。我认为我对jRuby的估计不正确,这就是我观察到的:
  • 用户1等待2,5秒等待其页面加载
  • 用户2等待3秒

  • 就请求处理而言,与MRI相同的是,jRuby不应并行处理这些吗?

    最佳答案

    我们在说的是假想的东西(和假设)

    如果“在我的应用程序中加载页面大约需要2.5秒钟”,则所有用户将(并发)继续加载此内容(除非您当然在第一次加载之后为其他用户进行了一些缓存或存储该页面)。

    区别在于在MRI中,每当执行Ruby代码(不等待IO等数据库或从http://加载东西)时,两个线程就不会同时运行,而在JRuby中,它们会同时运行。

    如果您在JRuby上看到User 2 waits for 3 seconds,则表示smt阻止了多个请求,例如沿途某处有一个Mutex(例如Rack::Lock)。

    关于ruby-on-rails - jRuby with Rails 4的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31928343/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com