为什么App Engine上的JRuby应用程序需要很长时间才能启动(与Python应用程序相比)?

时间:2010-03-30 18:11:21

标签: java python ruby google-app-engine jruby

我正在考虑在App Engine上使用JRuby,但是听说App Engine上的Juby应用程序与Python应用程序相比具有较长的启动延迟。为什么是这样?

是因为JRuby jar文件太大,以至于冷启动要求在应用程序开始投放之前将它们加载到内存中?这是我的猜测,但我不确定这是否是一个精确的技术解释。如果是这样,为什么Python会有所不同?

2 个答案:

答案 0 :(得分:10)

基本上就是这样。当您的应用暂时没有使用时,App Engine会将其交换出来,直到另一个请求进入。

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

我对JRuby没有任何经验,但是this page有一些关于如何减少应用程序冷启动时间的提示。即使您没有严格编写vanilla Java,这些提示也应该有用。

基本上,不要包含您的应用不重视的任何JAR。

答案 1 :(得分:0)

免责声明:我自己没有对此进行基准测试

Python版本与JRuby之间的区别 可能与JRuby是一种语言有很大关系 在另一种语言之上实现。另一方面是Python引擎 手是原生的,更接近CPython(一些内部变体 我会猜测Unladen swallow。这意味着对于Python来说 解释器根据定义已经加载,但对于JRuby,你的 应用程序必须先从加载Ruby解释器开始 从它的应用程序的逻辑开始。

相关问题