【发布时间】:2011-09-10 10:40:46
【问题描述】:
每次我对 Grails 应用程序进行细微更改时,都需要 10-15 秒来部署它。大部分时间都在“解决依赖关系”中......
Welcome to Grails 1.3.7 - http://grails.org/
...
Resolving dependencies...
Dependencies resolved in 9868ms.
以下是我的设置的一些细节:
- MacBook (OS X 10.5.8) 2.4Ghz Core 2 Duo,4GB RAM + 充足的磁盘空间
- SpringSource 工具套件 - 版本:2.6.1.RELEASE 构建 ID:201105041000
- Grails 1.3.7
- 只有几个领域模型的小型 Grails 项目
- 只有几个插件:hibernate 1.3.7、mail 1.0、spring-security-core 1.1.3、spring-security-open id 1.0.2、spring-security-ui 0.1.2、webtest 3.0.1李>
已经调查的领域:
- 删除 .ivy2 目录并强制进行完整的外部刷新确实将其缩短了大约 5 秒。
- 我的 .ivy2 目录在我的本地机器上,所以它不是 this problem
- 我确实遇到了一些类似于 these 的依赖问题,但是我现在已经修复了它们,并且没有收到任何错误。
- 我通过在 grails.project.dependency.resolution 部分设置日志“信息”在 BuildConfig.groovy 中打开了日志记录。它似乎大部分时间都在“解决”依赖关系而不是实际下载项目,所以我认为 mavenCentral 或其他公共 Maven 存储库不是问题。
从日志中提取...
resolution report resolve 802ms artifacts dl 86ms
resolution report resolve 8492ms artifacts dl 150ms
Dependencies resolved in 9909ms.
额外信息: 部署是指使用“运行应用程序”,重新部署是指更改强制 Grails 自动执行“运行应用程序”的文件。我没有任何其他与网络相关的性能问题,并且宽带互联网连接速度下降 32MB,上升 1MB。
对于基准测试,我过去曾开发过一个类似大小的应用程序,其中“解决依赖关系”大约需要 1 秒。该设置是 Grails 1.3.6,Shiro 安全插件,一个类似的小型项目,在 Windows XP Service Pack 3 机器上具有几个域模型(Intel Core 2 Duo 2.2Ghz,2GB RAM)然后我使用的是 NetBeans 6.9.1。
Extra Info 2:完整的常春藤日志附在here
我每次只更改很少的文件,因此重新部署需要 15 秒,这非常令人沮丧。
有人对如何减少“解决依赖关系...”所需的时间有任何建议吗?
【问题讨论】:
-
您是否在 Grails 之外遇到任何其他与网络相关的问题(缓慢)?您如何衡量 15 秒太长的事实?相比什么?此外,您可能会澄清“重新部署”的含义。当我想到部署时,我想到了将 WAR 文件放入 servlet 容器中。我相信您可能只是指用 run-app “重新启动”应用程序?
-
@Gregg,我已将额外信息直接添加到问题中。
-
@Chris 是否有任何快照依赖项?当您在 BuildConfig.groovy 中调高 ivy 日志记录级别时,您会看到什么?例如,我 99% 肯定 webtest 插件依赖于快照依赖项。
-
@Tiggerizzy,完整的常春藤日志附在here 中,是的,htmlunit 和 webtests 插件文件名以 -SNAPSHOT 结尾
-
@Tiggerizzy,某些依赖项是“快照”这一事实是否会导致额外的延迟?解决此问题的最简单方法是什么?
标签: performance grails dependencies