Liferay性能 - 如何运行多个jvms

时间:2014-12-03 13:36:05

标签: performance jvm liferay liferay-6

我需要提高Liferay 6.2门户的性能,该门户在6GB RAM的vm中运行。将Xmx和Xms增加到3GB以上也无济于事。

所以我在Liferay User-Guide

中偶然发现了这一段
  

请注意,存在一种内存收益递减规律,尤其是   64位系统。这些系统允许您创建非常大的   JVM,但JVM越大,垃圾所需的时间就越多   收集发生。出于这个原因,你可能不会想要   创建大小超过2 GB的JVM。 利用更高的优势   单个系统上的内存量,运行Liferay的多个JVM   代替

现在,我将如何运行Liferay的多个JVM?我的意思是我可以轻松地在不同的端口上运行两个tomcats(如8080和8082),但我想这两个实例必须以某种方式连接?

情景:

  • Liferay 6.2 EE
  • Tomcat 7
  • 并发用户数量非常有限(最多5个)
  • 一个站点,其上运行一个页面和一个自定义portlet(+ LR登录portlet)
  • 数据量非常有限(我的portlet表的最后一次转储是30MB)
  • 没有分机,没有勾。简单的JSF portlet,除了crud操作之外什么都不做。
  • Oracle 11g数据库(暂时在同一台机器上运行)

(我知道这不是门户网站的场景,但是客户想要它并且对建议有抵抗力)

在用户登录之前,加载页面需要45秒。我无法为您提供vm(运行CentOS的Hyper-V)的规格,但它不会令人惊叹(读低预算)。

谢谢,〜法比

1 个答案:

答案 0 :(得分:1)

我需要重新安排我的陈述 - 如果这会弄乱故事情节,那就很抱歉。

首先,在具有单个页面和5个用户的系统上,您在设置群集时无法获得任何收益。如果回答时间为45秒,则在另一个地方遇到严重问题,而不是您目前的想法。至于您提供的信息,人们只能猜测 - 但即使这不是一个很好的猜测 - 这些问题在哪里。他们当然不需要第二个实例。而且我会在更正的文档中得到过于具体的声明。

这结束了您原始问题的答案,即潜在的和假定的问题。万一你 - 或其他任何人 - 真的将来需要一个集群并想要设置它,我在这里留下我的其余答案。它不适用于您的情况。


如果2G max的一揽子索赔适合您,您必须自己测量。有些门户是内存绑定的,有些是CPU绑定的,有些是I / O或数据库绑定的。您必须自行检查限制特定应用程序性能的因素。您可能需要查看Liferay的性能白皮书(可在客户门户网站上找到,因为您似乎是EE用户)并确定应用程序的性质以及您可以期待的性能。

如果您的门户网站受CPU限制,则同一虚拟机上的两个门户网站根本无法帮助 。你应该看看实际的瓶颈并解决它。 45秒的应答时间 - 除非在非常高的负载下 - 指向一个我无法用集群解决的问题。

有关设置群集的文档,您可能需要查看新版Beta文档网站User's Guide上的https://dev.liferay.com或可用资料中的说明

此外,在几天之内(我在后期制作中)我将发布关于应用程序性能监控的Radio Liferay一集,并且将来可能会发布关于此主题的一系列剧集(计划中) - 它目前在队列中排名第3 - 可能是第44集。

此外,群集是System Administration Training中的一个(几乎全天)主题。最后,当你提到EE时,有一个clustering plugin for EE,优化了正在进行的集群通信。但请注意,您可能需要两个EE订阅才能在群集中运行两个实例。我在这里提到完整性,并不是因为我认为这个插件对你的情况有帮助。

在我写完所有这些之后,我发现你在与Liferay相同的机器上运行Oracle - 使用这种配置,如果你坚持使用6G RAM,那么同一台机器上的另一个Liferay实例肯定无济于事。事实上,性能不佳的原因可能是虚拟内存的使用:只要您的服务器将内存分页到磁盘,您就会进行烘烤。请注意,VM guest虚拟机甚至VM主机可能都是执行分页的主机。如果两者都在同时交换记忆,那么你就是一大堆吐司。