Liferay的“构建服务”和部署过于缓慢

时间:2014-04-29 09:33:34

标签: java performance tomcat liferay liferay-6

我正在使用Liferay平台开发公司门户(版本6.1.1)。这个门户已经有相当大的实现和数据库大小(174个表)。

正如预期的那样,随着项目的增长,构建服务和部署从一开始就变得越来越慢。

问题在于,使用当前实现,执行“构建服务”需要20分钟,执行部署需要大约3/4分钟,即使我在代码中更改了一个简单的字符串也是如此。对于每3次部署,重启服务器是必要的,因为它似乎冻结了。

我的机器规格是:

  • 英特尔酷睿i5-3210M
  • 8GB RAM
  • 64位

这是我的liferay服务器的记忆参数:

  • -Xms1024m -Xmx1024m -XX:PermSize = 1024m -XX:MaxPermSize = 1024m

如您所知,等待时间在实施过程中会有很大的下降。

我的问题是:这是正常的吗?如果是,我将来在门户网站实施中有哪些替代方案?

谢谢。

1 个答案:

答案 0 :(得分:3)

174张桌子相当多 - 比Liferay本身带来的更多。我建议将您的应用程序分散到可单独部署的插件中 - 它们(技术上)不需要在同一个插件中,服务构建器允许您在不同的插件中使用这些服务。

正确的依赖关系管理应该可以帮助您将您提取的功能隔离到单独的应用程序中。声明哪个应用程序需要之前部署的其他应用程序,并且您可以跨服务器访问服务。

要回答您的评论问题,请仅使用两个项目进行抽样:使用服务构建器创建它们。我们称他们为common-portletapp1-portlet。显然,app1-portlet使用来自common-portlet的组件(和服务)。

在app1-portlet中,编辑docroot/WEB-INF/liferay-plugin-package.properties并添加行

 required-deployment-contexts=common-portlet

这将确保app1-portlet仅在common-portlet可用时部署。此外,common-service.jar,使用service-biulder生成的common-portlet的API,将自动放在app1-portlet的类路径上,换句话说,您可以调用您在common-portlet

假设您的更抽象的portlet具有更稳定的接口(通常这表示适当的体系结构),对app1-portlet(或app2-portlet等)的更改只会影响您在其中进行更改的portlet即使您在common-portlet中进行了更改,服务构建器也会相对较快,但是,在接口更改时,您仍需要重新编译所有内容,但这是依赖项的本质。如果您不更改界面,则只需要重新部署。