我正在考虑在 App Engine 上使用 JRuby,但听说 App Engine 上的 Juby 应用程序与 Python 应用程序相比启动延迟很长。为什么是这样?
是否因为 JRuby jar 文件太大,冷启动需要在应用程序开始服务之前将它们加载到内存中?那是我的猜测,但我不确定这是否是一个精确的技术解释。如果是这样,为什么 Python 不同?
最佳答案
基本上就是这样。如果您的应用有一段时间未被使用,App Engine 会将其换出,直到收到另一个请求。
发生这种情况时,它会加载您的应用所需的所有 JAR,这可能需要很长时间,在某些情况下会超过 10-15 秒。
我对 JRuby 没有任何经验,但是 this page有一些关于如何减少应用冷启动时间的技巧。即使您不是严格编写 vanilla Java,这些技巧也应该有用。
基本上,只要不包含您的应用不高度依赖的任何 JAR。
关于java - 为什么 App Engine 上的 JRuby 应用程序需要很长时间才能启动(与 Python 应用程序相比)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2547498/