调整 Liberty
可调整 Liberty 的参数和属性。
关于此任务
过程
- 调整 JVM。 不管您是配置开发环境还是生产环境,调整 JVM 都是一个极其重要的调整步骤。针对 Liberty 调整 JVM 时,请使用 ${server.config.dir} 目录中的 jvm.options 文件。可以指定要使用的每个 JVM 参数,每行一个选项。有关更多信息,请参阅定制 Liberty 环境。jvm.options 文件的示例如下所示:
-Xms50m -Xmx256m
对于开发环境,您可能对更快速地启动服务器感兴趣,因此请考虑将最小堆大小设置为较小的值,而将最大堆大小设置为您的应用程序所需的任何值。对于生产环境,将最小堆大小和最大堆大小设置为相同的值时,可以通过避免堆扩展和收缩来提供最佳性能。
- 调整传输通道服务。 传输通道服务会管理客户机连接、用于 HTTP 的 I/O 处理、线程池以及连接池。对于 Liberty 上的应用程序,下列属性适用于不同的元素,而这些元素可用于提高运行时性能和/或可伸缩性。
- httpOptions 的 maxKeepAliveRequests
- 此选项指定启用持续连接时,单个 HTTP 连接上可接受的最大持续请求数。值为 -1 时意味着不受限制。此选项支持等待时间较短或者吞吐量较大的应用程序,并且支持在构建新连接可能成本高昂的情况下使用 SSL 连接。以下示例说明了如何在 server.xml 文件中对此选项进行编码:
<httpOptions maxKeepAliveRequests="-1" />
- connectionManager 的 maxPoolSize
- 此选项指定连接池的最大物理连接数。缺省值为 50。这里的优化设置取决于应用程序特征。对于每个线程均获取与数据库的连接的应用程序,可开始于 1:1(映射到 coreThreads 属性)。以下示例说明了如何在 server.xml 文件中对此选项进行编码:
<connectionManager ... maxPoolSize="40" />
- connectionManager 的 purgePolicy
- 此选项指定在池中检测到旧连接时要销毁哪些连接。缺省值为整个池。最好是仅清除失败连接。以下示例说明了如何在 server.xml 文件中对此选项进行编码:
<connectionManager ... purgePolicy="FailingConnectionOnly" />
- connectionManager 的 numConnectionsPerThreadLocal
- 此选项指定每个执行程序线程要高速缓存的数据库连接数。此设置可以通过为每个线程保留指定数目的数据库连接,在多核心 (8+) 机器上提供重大改进。
- 如果对连接使用线程本地存储器,那么可以提升多线程系统上应用程序的性能。如果将
numConnectionsPerThreadLocal 设置为 1 或以上,那么每个线程的这些连接都存储在线程本地存储器中。使用
numConnectionsPerThreadLocal 时,考虑另外两个值:
- 应用程序线程数
- 连接池最大连接数
<connectionManager ... numConnectionsPerThreadLocal="1" />
- dataSource 的 statementCacheSize
- 此选项指定每个连接的高速缓存预编译语句的最大数目。要设置此选项,请完成下列必备步骤:
- 查看应用程序代码(或您从数据库或数据库驱动程序收集的 SQL 跟踪)以找出所有独有预编译语句。
- 请确保高速缓存大小大于语句数。
<dataSource ... statementCacheSize="60" >
- dataSource 的 isolationLevel
- 数据源隔离级别指定数据完整性和并发性的程度,这又控制数据库锁定的级别。提供四个不同的选项,顺序如下:最佳性能(最低完整性)到最低性能(最佳完整性)。
- TRANSACTION_READ_UNCOMMITTED
- 可以进行脏读取、不可重复读取和幻象读取。
- TRANSACTION_READ_COMMITTED
- 脏读取受到阻止;可以进行不可重复读取和幻象读取。
- TRANSACTION_REPEATABLE_READ
- 脏读取和不可重复读取受到阻止;可以进行幻象读取。
- TRANSACTION_SERIALIZABLE
- 脏读取、不可重复读取和幻象读取受到阻止。
<dataSource ... isolationLevel="TRANSACTION_READ_COMMITTED">
- 调整缺省执行程序。
Liberty 缺省执行程序是自调整执行程序,并且可通过动态添加或移除线程来适应当前工作负载。对于大部分工作负载,该执行程序不需要任何调整,建议您不要更改该执行程序的任何设置,除非您遇到有关线程创建的特定问题。
必要时,可在 server.xml 文件中配置 executor 元素的 coreThreads 和 maxThreads 参数来设置 Liberty 自动调整代码的上限和下限。coreThreads 设置通常不是必需的,因为此执行程序包含主动反死锁代码,此代码会添加线程以使执行程序脱离死锁情况。反死锁代码添加的线程数极少超过所需线程数。在此情况下,您可使用 executor 元素的 maxThreads 参数来限制允许执行程序创建的线程数。
- 缩短 servlet 的响应时间。
要缩短 servlet 的响应时间,请将以下属性添加至 server.xml 文件:
<webContainer skipMetaInfResourcesProcessing="true"/>
- 缩短空闲服务器 CPU 时间。
要缩短空闲服务器 CPU 时间,请将以下属性添加至 server.xml 文件:
<applicationMonitor dropinsEnabled="false" updateTrigger="disabled"/> <config updateTrigger="disabled"/>
添加属性时,服务器不再监视配置或应用程序更新。
- 调整启动时间。
- CDI 1.2
- 缺省情况下,CDI 1.2 功能部件会扫描所有应用程序归档。CDI 1.2 功能部件可能会大幅增加启动时间,并对较大应用程序有极大影响。可通过将 enableImplicitBeanArchives 值设置为 false 禁用针对注释的隐式归档扫描。此设置会跳过归档扫描,除非它们包含
beans.xml 文件。
<cdi12 enableImplicitBeanArchives="false"/>
注: 即使 cdi-1.2 功能部件不在 server.xml 文件的 <features> 部分中,也可能包括此功能部件,因为其他功能部件(例如,webProfile-7.0 和 javaee-7.0)包括 cdi-1.2 功能部件。在 messages.log 文件中查找“服务器已安装以下功能部件:”来了解是否安装了 cdi-1.2。
子主题
- 针对安全应用程序调整 Liberty
可以调整 Liberty 以最大程度地提高安全应用程序的性能。 - 在 Liberty 中调整联合 LDAP 存储库
可通过监视并调整高速缓存及 server.xml 文件中的上下文池元素来改进联合 LDAP 存储库的性能。
相关参考:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_tun
文件名:twlp_tun.html