如何将 Glassfish 启动时间从 2 分钟减少到可接受的程度?

如何将 Glassfish 启动时间从 2 分钟减少到可接受的程度?

我在 Amazon EC2 (Elastic Compute Cloud) 中的 Ubuntu 12.04 微型实例上运行 Glassfish Open Source Edition v3.1.1。我已配置了一个包含单个应用程序的单个域。当我使用 启动该域时time asadmin start-domain,它会报告以下内容:

Waiting for domain1 to start ............................
(...)
Command start-domain executed successfully.
real    2m6.599s

两分钟……什么需要两分钟?有什么方法可以加快这个过程,还是我应该为我的应用服务器选择其他解决方案,如 Tomcat 或 Jetty?在本地 Windows 8 客户端计算机上重新启动 Glassfish 时,需要几秒钟,而不是几分钟。虽然我知道我的电脑有更多的硬件,但启动一个简单的应用服务器不应该花两分钟。

我已尝试按照以下建议将以下两个 JVM-OPTIONS 添加到域配置文件中其他 讨论,毫无效果-Djava.net.preferIPv4Stack=trueDcom.sun.enterprise.tools.admingui.NO_NETWORK=1

更新: 经过两次发布后--verbose,以下是对两个有趣片段的编辑比较:

运行 #1

[#|2013-03-15T11:32:48.597+0000| Created virtual server [__asadmin]|#]
[#|2013-03-15T11:33:12.244+0000| Virtual server [server] loaded default web module    []|#]
[#|2013-03-15T11:33:15.973+0000| Scanning for root resource and provider classes in the packages:

运行 #2

[#|2013-03-15T11:36:10.707+0000| Created virtual server [__asadmin]|#]
[#|2013-03-15T11:36:25.127+0000| Virtual server [server] loaded default web module []|#]
[#|2013-03-15T11:37:37.198+0000| Scanning for root resource and provider classes in the packages:

pastbin 中第 2 次运行的完整日志这里

值得注意的是两次运行中第二行和第三行的时间差异很大。(3 秒 vs 1 分钟以上)

我还可以补充一点,在服务器启动时,第二个 SSH 窗口中的控制台响应非常慢 - 需要ls几秒钟才能响应。

编辑2 Free-服务启动后的输出:

              total       used       free     shared    buffers     cached
 Mem:        604376     469776     134600          0       8976      78212
 -/+ buffers/cache:     382588     221788
 Swap:            0          0          0

答案1

请注意,微实例是:

  • CPU 方面非常有限,并且使用突发分配的概念。确切的描述是:最多 2 个 EC2 计算单元(用于短周期突发)。

  • 内存非常有限(613MB)。确保 Glassfish 不会尝试过度分配,因为您将交换到磁盘,而这在 AWS EC2 中会受到严重惩罚。

很确定你击中了其中的一个……

相关内容