8

我是 Liferay 开发的新手,我在启动 Liferay Tomcat 服务器时遇到了麻烦。这需要将近 3 分钟(169048 毫秒),这对于开发来说是不可接受的。我想把它缩短到大约一分钟。

以下是我机器的规格:

  • 英特尔酷睿双核 T2300 @ 1.66GHz
  • 4GB RAM(使用中 3.24GB)
  • 带有 Service Pack 1 的 Windows 7 Enterprise 32 位

我在用着:

  • Liferay 6.1.1-ce-ga2 与 Tomcat 7 捆绑在一起
  • Eclipse IDE Juno 发布

为了加快速度,我已经:

  • 从 tomcat\webapps 文件夹中删除了所有不必要的 portlet。
  • 将Tomcat原生库1.1.24放到tomcat\bin文件夹下
  • 调整了我的 portal-ext.properties,如下所示
     #禁用一些过滤器  
     com.liferay.portal.servlet.filters.sso.cas.CASFilter = false
     com.liferay.portal.servlet.filters.sso.ntlm.NtlmFilter = false
     com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter = false
     com.liferay.portal.servlet.filters.sso.opensso.OpenSSOFilter=false
     com.liferay.portal.sharepoint.SharepointFilter = false
     com.liferay.portal.servlet.filters.gzip.GZipFilter = false

     #禁用索引  
     index.on.startup=false

这是我的启动日志:

    2013 年 1 月 30 日上午 8:39:49 org.apache.catalina.core.AprLifecycleListener 初始化
    信息:已加载基于 APR 的 Apache Tomcat 本机库 1.1.24。
    2013 年 1 月 30 日上午 8:39:49 org.apache.catalina.core.AprLifecycleListener 初始化
    信息:APR 功能:IPv6 [true]、sendfile [true]、接受过滤器 [false]、随机 [true]。
    2013 年 1 月 30 日上午 8:39:51 org.apache.coyote.AbstractProtocol 初始化
    信息:初始化 ProtocolHandler ["http-apr-8080"]
    2013 年 1 月 30 日上午 8:39:51 org.apache.coyote.AbstractProtocol 初始化
    信息:初始化 ProtocolHandler ["ajp-apr-8009"]
    2013 年 1 月 30 日上午 8:39:51 org.apache.catalina.startup.Catalina 加载
    INFO:初始化在 2620 毫秒内处理
    2013 年 1 月 30 日上午 8:39:51 org.apache.catalina.core.StandardService startInternal
    信息:启动服务 Catalina
    2013 年 1 月 30 日上午 8:39:51 org.apache.catalina.core.StandardEngine startInternal
    信息:启动 Servlet 引擎:Apache Tomcat/7.0.27
    2013 年 1 月 30 日上午 8:39:51 org.apache.catalina.startup.HostConfig deployDescriptor
    信息:部署配置描述符 C:\Liferay\portal-6.1.1-ce-ga2\tomcat-7.0.27\conf\Catalina\localhost\Hi-portlet.xml
    2013 年 1 月 30 日上午 8:39:51 org.apache.catalina.startup.HostConfig deployDescriptor
    警告:主机 appBase 中的 docBase C:\Liferay\portal-6.1.1-ce-ga2\tomcat-7.0.27\webapps\Hi-portlet 已指定,将被忽略
    2013 年 1 月 30 日上午 8:39:51 org.apache.catalina.startup.SetContextPropertiesRule 开始
    警告:[SetContextPropertiesRule]{Context} 将属性 'source' 设置为 'org.eclipse.jst.jee.server:Hi-portlet' 没有找到匹配的属性。
    2013 年 1 月 30 日上午 8:39:52 org.apache.catalina.startup.HostConfig deployDescriptor
    信息:部署配置描述符 C:\Liferay\portal-6.1.1-ce-ga2\tomcat-7.0.27\conf\Catalina\localhost\ROOT.xml
    正在加载 jar:file:/C:/Liferay/portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/system.properties
    正在加载 jar:file:/C:/Liferay/portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties
    加载文件:/C:/Liferay/portal-6.1.1-ce-ga2/portal-ide.properties
    加载文件:/C:/Liferay/portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/classes/portal-developer.properties
    加载文件:/C:/Liferay/portal-6.1.1-ce-ga2/portal-ext.properties
    2013 年 1 月 30 日上午 8:39:59 org.apache.catalina.core.ApplicationContext 日志
    信息:初始化 Spring 根 WebApplicationContext
    08:40:16,321 INFO [pool-2-thread-1][DialectDetector:71] 确定 HSQL 数据库引擎 2 的方言
    08:40:16,330 WARN [pool-2-thread-1][DialectDetector:86] Liferay 被配置为使用 Hypersonic 作为其数据库。不要在生产中使用 Hypersonic。Hypersonic 是一个嵌入式数据库,可用于开发和演示目的。可以在 portal-ext.properties 中更改数据库设置。
    08:40:16,484 INFO [pool-2-thread-1][DialectDetector:136] 找到方言 org.hibernate.dialect.HSQLDialect
    启动 Liferay Portal Community Edition 6.1.1 CE GA2(Paton / Build 6101 / 2012 年 7 月 31 日)
    08:41:36,974 INFO [pool-2-thread-1][BaseDB:452] 数据库支持区分大小写的查询
    08:41:37,828 INFO [pool-2-thread-1][ServerDetector:154] 服务器支持热部署
    08:41:37,850 INFO [pool-2-thread-1][PluginPackageUtil:1030] 读取根上下文的插件包
    08:42:19,657 INFO [pool-2-thread-1][AutoDeployDir:106] 为 C:\Liferay\portal-6.1.1-ce-ga2\deploy 启动自动部署扫描程序
    08:42:24,410 INFO [pool-2-thread-1][HotDeployImpl:178] 从队列中部署 Hi-portlet
    08:42:24,415 INFO [pool-2-thread-1][PluginPackageUtil:1033] 读取 Hi-portlet 的插件包
    2013 年 1 月 30 日上午 8:42:24 org.apache.catalina.core.ApplicationContext 日志
    信息:初始化 Spring 根 WebApplicationContext
    2013 年 1 月 30 日上午 8:42:30 org.apache.catalina.core.ApplicationContext 日志
    信息:初始化 Spring FrameworkServlet 'Remoting Servlet'
    2013 年 1 月 30 日上午 8:42:34 org.apache.catalina.startup.HostConfig deployDirectory
    信息:部署 Web 应用程序目录 C:\Liferay\portal-6.1.1-ce-ga2\tomcat-7.0.27\webapps\resources-importer-web
    08:42:35,522 INFO [pool-2-thread-1][HotDeployImpl:178] 从队列中部署资源-importer-web
    08:42:35,523 INFO [pool-2-thread-1][PluginPackageUtil:1033] 读取资源-importer-web 的插件包
    2013 年 1 月 30 日上午 8:42:36 org.apache.catalina.core.ApplicationContext 日志
    信息:初始化 Spring 根 WebApplicationContext
    2013 年 1 月 30 日上午 8:42:36 org.apache.catalina.startup.HostConfig deployDirectory
    信息:部署 Web 应用程序目录 C:\Liferay\portal-6.1.1-ce-ga2\tomcat-7.0.27\webapps\welcome-theme
    08:42:36,609 INFO [pool-2-thread-1][HotDeployEvent:109] 插件欢迎主题需要资源-importer-web
    08:42:37,305 INFO [pool-2-thread-1][HotDeployImpl:178] 从队列中部署欢迎主题
    08:42:37,306 INFO [pool-2-thread-1][PluginPackageUtil:1033] 阅读欢迎主题的插件包
    2013 年 1 月 30 日上午 8:42:37 org.apache.catalina.core.ApplicationContext 日志
    信息:初始化 Spring 根 WebApplicationContext
    08:42:37,787 INFO [pool-2-thread-1][ThemeHotDeployListener:87] 为欢迎主题注册主题
    08:42:39,764 INFO [pool-2-thread-1][ThemeHotDeployListener:100] 欢迎主题的 1 个主题可供使用
    2013 年 1 月 30 日上午 8:42:40 org.apache.coyote.AbstractProtocol 开始
    信息:启动协议处理程序 ["http-apr-8080"]
    08:42:40,167 INFO [liferay/hot_deploy-1][HotDeployMessageListener:142] 公司 liferay.com 的组或布局集原型已经存在
    2013 年 1 月 30 日上午 8:42:40 org.apache.coyote.AbstractProtocol 开始
    信息:启动协议处理程序 [“ajp-apr-8009”]
    2013 年 1 月 30 日上午 8:42:40 org.apache.catalina.startup.Catalina 开始
    信息:服务器在 169048 毫秒内启动

有什么建议么?

4

3 回答 3

2

评论已经给出了一些提示。我想说,最重要的问题是检查是否使用了虚拟内存(分页)——一旦操作系统必须将内存分页到磁盘,你就失去了:这可能会对性能造成巨大的影响。

当您升级内存时(例如,如果您使用虚拟内存),您可能需要考虑将操作系统升级到 64 位操作系统 - 32 位只能处理 4G,并且您可能会遇到 appserver 内存的限制,因为每个进程只能获得有限数量的记忆。

您还可以在运行这么多其他应用程序之前测试 Liferay 是否启动得更快 - 这是您遇到内存问题的另一个提示。

SSD 选项将进一步加速您的系统,但价格比 RAM 高得多。此外,SSD 上的虚拟内存不是真的推荐 - 它会更快地磨损驱动器。与其在 SSD 上使用虚拟内存,不如不要使用虚拟内存——这会更快、更便宜。

于 2013-02-03T18:08:36.157 回答
0

服务器速度很大程度上取决于配置良好的 JVM(内存、垃圾收集器类型等)和 Tomcat 连接器线程池。取决于可用的服务器资源。Liferay 提供了一个推荐的配置:

`-server -XX:NewSize=1024m -XX:MaxNewSize=1024m -Xms4096m
-Xmx4096m -XX:MetaspaceSize=300m -XX:MaxMetaspaceSize=300m
-XX:SurvivorRatio=12 –XX:TargetSurvivorRatio=90 –
XX:MaxTenuringThreshold=15 -XX:+UseLargePages
-XX:LargePageSizeInBytes=256m -XX:+UseParNewGC
-XX:ParallelGCThreads=16 -XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled -XX:+CMSCompactWhenClearAllSoftRefs
-XX:CMSInitiatingOccupancyFraction=85 -XX:+CMSScavengeBeforeRemark
-XX:+UseLargePages -XX:LargePageSizeInBytes=256m
-XX:+UseCompressedOops -XX:+DisableExplicitGC -XX:-UseBiasedLocking
-XX:+BindGCTaskThreadsToCPUs -XX:+UseFastAccessorMethods
-XX:InitialCodeCacheSize=32m -XX:ReservedCodeCacheSize=96m`

上述 JVM 设置应该为您的性能调整制定一个起点。由于当前用户数量和交易速度等多种因素,每个系统的最终参数都会有所不同。

在 tomcat 服务器中,您可以在 /[tomcat_server]/bin/setenv.[sh or bat] 文件中定义此配置,例如CATALINA_OPTS环境变量。

于 2017-12-11T09:06:34.017 回答
0

通过升级到 Liferay 7 解决了这个问题。

尽管 Liferay 7 启动速度并不快,但开发人员真的不需要重新启动它,因为一切都可以通过部署新的 OSGi 组件来覆盖。这实际上是 Liferay 6 和 Liferay 7 最大的区别。

我已经为 Liferay 7 开发了 3 个月,包括非常深入的定制(例如拦截所有文件读取以进行审计),并且从未需要重新启动 Liferay 服务器。

于 2017-12-11T07:18:58.107 回答