Java 为什么应用程序引擎上的JRuby应用程序需要这么长时间才能启动(与Python应用程序相比)?

Java 为什么应用程序引擎上的JRuby应用程序需要这么长时间才能启动(与Python应用程序相比)?,java,python,ruby,google-app-engine,jruby,Java,Python,Ruby,Google App Engine,Jruby,我正在考虑在appengine上使用JRuby,但听说Juby App-on-appengine与Python App相比启动滞后时间较长。为什么会这样 是不是因为JRubyJAR文件太大,冷启动需要在应用程序开始服务之前将其加载到内存中?这是我的猜测,但我不确定这是否是一个精确的技术解释。如果是这样的话,为什么Python不同呢?基本上就是这样。当你的应用程序有一段时间没有使用时,应用程序引擎会将其交换出去,直到收到另一个请求 当这种情况发生时,它会加载应用程序所需的所有JAR,这可能需要很长

我正在考虑在appengine上使用JRuby,但听说Juby App-on-appengine与Python App相比启动滞后时间较长。为什么会这样


是不是因为JRubyJAR文件太大,冷启动需要在应用程序开始服务之前将其加载到内存中?这是我的猜测,但我不确定这是否是一个精确的技术解释。如果是这样的话,为什么Python不同呢?

基本上就是这样。当你的应用程序有一段时间没有使用时,应用程序引擎会将其交换出去,直到收到另一个请求

当这种情况发生时,它会加载应用程序所需的所有JAR,这可能需要很长时间,在某些情况下可能需要10-15秒以上

我没有任何使用JRuby的经验,但是我有一些关于如何减少应用程序冷启动时间的建议。即使您不是严格地编写普通Java,这些技巧也应该很有用

基本上,就是不要包含任何你的应用程序不太依赖的jar。

免责声明:我自己还没有做过基准测试

尤其是Python版本和JRuby之间的差异 可能与JRuby是一种语言这一事实有很大关系 在另一种语言之上实现。另一方面是Python引擎 hand是土生土长的,更接近于CPython(一些内部版本) 我猜是的)。这意味着对于Python来说 根据定义,解释器已经加载,但对于JRuby,您的 应用程序必须先加载Ruby解释器,然后才能启动 从它的应用程序逻辑开始