【发布时间】:2012-03-12 22:00:23
【问题描述】:
在与另一家也使用 App Engine 的公司的同事讨论后,他告诉我,他通过以下步骤将应用预热时间从大约 15 秒缩短到了大约 5 秒:
- 配置 Eclipse 以将编译期间生成的类捆绑到单个 JAR 文件中。
- 配置 Eclipse 以在 App Engine 部署期间上传此单个 JAR 文件,而不是上传数百(或数千)个单独的 Java 类。
他认为,在实例预热期间,由于实例只需要加载单个捆绑的 JAR 文件而不是数千个单独的类,因此预热会明显更快。对此有何想法或意见?
我肯定想自己尝试一下,但是我没有足够的 Eclipse-mojo 知道如何配置这些步骤。有谁知道如何配置 Eclipse 或 Google Plugin for Eclipse 来执行上述步骤? (当然要让已部署的应用程序在 App Engine 中成功运行)
谢谢,
【问题讨论】:
-
你为什么不给你的同事发一个链接到这个页面,这样他就可以准确地解释他做了什么? (:
-
我确定他告诉过你
jar,而不是war -
我听说这对于大型应用程序来说要快得多。我看到有人将他们的启动时间减少了几秒钟。似乎 Google 的文件系统相对较慢,加载单个压缩 JAR 比加载小文件或未压缩数据快得多。解压缩是一种相对便宜的操作。
-
Akamai 是领先的内容分发网络之一,通过将它们从索引 ZIP 文件中提取出来,比我单独存储它们更有效地提供大量静态文件。由于 WAR 和 JAR 都是特定类型的 ZIP 文件,我可以肯定地想象 Google 的 AppEngine 也会看到很多加速。我认为这与在分布式文件系统中定位文件的成本(高)与在找到文件后读取文件(低)有关,特别是当您可以将多个文件塞进一个块/磁盘读取/缓冲区时大小/内存页/随便什么。
-
eclipse 插件仅执行“appcfg.sh update /path/to/wardir”。当我尝试对战争文件“appcfg.sh update /path/to/filename.war”执行相同操作时,我收到消息“appcfg 只接受 webapp 目录,而不接受战争文件”。这是应用引擎“发布:1.6.3”
标签: java eclipse google-app-engine deployment jar