我正在考慮在App Engine上使用JRuby,但聽說App Engine上的Juby應用程序與Python應用程序相比,啓動滯後很長。爲什麼是這樣?爲什麼App Engine上的JRuby應用程序需要很長時間才能啓動(與Python應用程序相比)?
是因爲JRuby的jar文件是如此之大,冷啓動需要它們加載到內存中之前的應用程序才能開始投放?這將是我的猜測,但我不確定這是否是一個精確的技術解釋。而且,如果是這樣,爲什麼Python不同?
我正在考慮在App Engine上使用JRuby,但聽說App Engine上的Juby應用程序與Python應用程序相比,啓動滯後很長。爲什麼是這樣?爲什麼App Engine上的JRuby應用程序需要很長時間才能啓動(與Python應用程序相比)?
是因爲JRuby的jar文件是如此之大,冷啓動需要它們加載到內存中之前的應用程序才能開始投放?這將是我的猜測,但我不確定這是否是一個精確的技術解釋。而且,如果是這樣,爲什麼Python不同?
基本上就是這樣。當你的應用程序暫時未被使用時,App Engine會將其交換出去,直到有另一個請求進來。
當發生這種情況時,它會加載應用程序需要的所有JAR,這可能需要很長時間,在某些情況下爲10-15秒。
我對JRuby沒有特別的體驗,但this page有一些關於如何減少應用冷啓動時間的提示。即使您沒有嚴格編寫vanilla Java,這些提示也應該很有用。
基本上,只要不包括您的應用程序不沉重地壓在依賴於任何JAR文件。
免責聲明:我沒有這個基準自己
的Python的版本和JRuby特別 之間差異可能有很多要做的事實,JRuby是對另一種語言的基礎上實現語言 。另 手Python的引擎是本地人,更接近CPython的(一些內部的 Unladen swallow變種,我猜)。這意味着,對於Python中, 解釋是定義已加載,但對JRuby的,你 應用程序必須與加載的Ruby解釋器,然後才能開始 與它的應用程序的邏輯開始。