Sun Java System Application Server 9.1 部署规划指南

第 4 章 部署核对表

本附录提供了一个核对表,可借助此表来着手评估并在生产环境中使用 Application Server。

部署核对表

表 4–1 核对表

组件/功能

说明 

应用程序

确定要部署的应用程序的以下要求: 

硬件

操作系统

网络基础设施

  • 确定单点故障并对其进行修复。

  • 确保正确配置了 NIC 和其他网络组件。

  • 运行 ttcp 基准测试,以确定吞吐量是否符合要求/预期结果。

  • 根据偏好安装 rsh/ssh,以便正确安装 HADB 节点。

    有关更多信息,请参见《Sun Java System Application Server 9.1 Installation Guide》

后端和其他外部数据源

与相关领域专家或供应商进行核实,以确保这些数据源配置正确。 

系统更改/配置

  • 在运行任何性能/压力测试之前,请确保对 /etc/system 及其在 Linux 上的等效文件的更改已完成。

  • 确保对 TCP/IP 设置的更改已完成。

  • 默认情况下,系统上预配置了许多服务。并非所有服务都需要运行。请关闭不需要的服务以节省系统资源。

  • 在 Solaris 上,可使用 Setoolkit 来确定系统的行为。解析显示的所有标志。

    有关更多信息,请参见《Sun Java System Application Server 9.1 Performance Tuning Guide》

Application Server 和 HADB 安装

HADB 配置

Application Server 配置

  • 日志记录:启用访问日志轮转。

  • 选择正确的日志记录级别。通常会使用 "WARNING"。

  • 使用管理控制台配置 J2EE 容器。

  • 使用管理控制台配置 HTTP 侦听器。

  • 使用管理控制台配置 ORB 线程池。

  • 如果使用包含本机代码的 Type2 驱动程序或调用,请确保在 LD_LIBRARY_PATH 中指定了 mtmalloc.so。

  • 确保使用适当的持久性范围和频率,并且在各个 Web/EJB 模块中没有将它们覆盖。

  • 确保仅对 SFSB 中的关键方法执行检查点操作。

    有关性能调节的更多信息,请参见《Sun Java System Application Server 9.1 Performance Tuning Guide》

    有关配置的更多信息,请参见《Sun Java System Application Server 9.1 管理指南》

负载平衡器配置

Java 虚拟机配置

  • 最初,将最小和最大堆大小设置为相同的值,每个实例至少为 1 GB。

  • 有关更多信息,请参见 Java Hotspot VM Options(Java Hotspot VM 选项)

  • 在运行多个 Application Server 实例时,请考虑创建一个处理器集,并将 Application Server 绑定到该处理器集。如果使用 CMS 收集器清除以前的内容,这是非常有用的。

在负载平衡器中配置超时

  • Response-time-out-in-seconds - 负载平衡器在声明 Application Server 实例运行不正常之前等待的时间。根据应用程序的响应时间设置该值。如果设置的值太大,Web Server 和负载平衡器插件将等待很长的时间,才会将 Application Server 实例标记为运行不正常。如果设置的值太小,并且 Application Server 的响应时间超过该阈值,则会将该实例错误地标记为运行不正常。

  • Interval-in-seconds - 检查运行不正常的实例是否恢复为正常状态之前等待的时间(以秒为单位)。如果该值太小,则会产生从负载平衡器插件到 Application Server 实例的额外通信;如果该值太大,则会延迟向已恢复正常状态的实例路由请求。

  • Timeout-in-seconds - 为运行状况检查请求获取响应的持续时间。请根据群集中的各个系统的通信情况调整该值,以确保运行状况检查成功完成。

    有关更多信息,请参见《Sun Java System Application Server 9.1 高可用性管理指南》中的第 5  章 “配置 HTTP 负载平衡”

在 HADB 中配置超时

  • sql_client_timeout - SQLSUB 等待空闲客户机的时间。例如,已登录、发送了一些请求后等待用户输入的客户机。假定空闲时间超过 30 分钟的客户机已停用并终止会话。如果设置的值太小,则可能会提前终止 SQL 会话。如果设置的值太大,则可能会导致未处于空闲状态但已退出的 SQL 会话占用资源。而这又会阻止其他 SQL 客户机进行登录。在调整此变量时,还要考虑 nsessions 设置。如果 HADB JDBC 连接池的 steady-pool-size 大于 max-pool-size,则可以将 idle-timeout-in-seconds 设置为小于 sql_client_timeout,以便 Application Server 在 HADB 关闭连接之前自行将其关闭。默认值为 1800 秒。

  • lock_timeout - 事务等待访问数据的最长时间(以毫秒为单位)。如果超过该时间,事务将生成以下错误消息:“事务超时”。此类超时是由于事务等待其他事务所保留的锁定(死锁)引起的,这会产生很高的服务器负载。不要将该值设置为低于 500 毫秒。如果在服务器日志中看到“事务超时”消息,请增大该值。可通过在 HADB 的 JDBC 连接池中添加属性来设置锁定超时值,如下所示:<property name=lockTimeout value="x"\>。默认值为 5000 毫秒。

  • Querytimeout - HADB 等待执行查询的最长时间(以毫秒为单位)。如果服务器日志中不断出现指明查询超时的异常,请考虑增大该值。可通过在 HADB 的 JDBC 连接池中添加以下属性来设置该值:<property name=QueryTimeout value="x"\>。默认值为 30 秒。

  • loginTimeout - 客户机等待登录到 HADB 的最长时间(以秒为单位)。可通过在 HADB 的 JDBC 连接池中添加以下属性来设置该值:<property name=loginTimeout value="x"\>。默认值为 10 秒。

  • MaxTransIdle - 在向客户机发送回复和接收下一个请求之间,事务可以处于空闲状态的最长时间(以毫秒为单位)。可通过在 HADB 的 JDBC 连接池中添加属性来更改该值,如下所示: <property name=maxtransIdle value="x"\>。默认值为 40 秒。

    有关更多信息,请参见:《Sun Java System Application Server Performance Tuning Guide》。

在 Application Server 中配置超时

  • Max-wait-time-millis - 在抛出异常之前等待从池中获取连接的时间。默认值为 6 秒。对于要保留的数据大小超过 50 KB 的高负载系统,请考虑更改该值。

  • Cache-idle-timeout-in-seconds - 在 EJB 钝化之前允许其在高速缓存中处于空闲状态的时间。仅适用于实体 Bean 和有状态会话 Bean。

  • Removal-timeout-in-seconds - EJB 保持钝化状态的时间(在备份存储中处于空闲状态)。默认值为 60 分钟。请根据 SFSB 故障转移需求调整该值。

在调整所有这些值时,应考虑到 HADB 的 JDBC 连接池设置 max-wait-time-in-millis。有关更多信息,请参见《Sun Java System Application Server 9.1 高可用性管理指南》中的“配置 JDBC 连接池”

调整 VM 垃圾收集 (Garbage Collection, GC)

如果垃圾收集暂停 4 秒或更长时间,则可能会导致在 HADB 中保留会话状态的过程中出现时断时续的问题。为避免出现此问题,请调整 VM 堆。如果在保留数据时不容许出现丝毫故障,或者系统并未满负荷运行,请使用 CMS 收集器或吞吐量收集器。 

可通过添加以下内容来启用这些收集器: 

<jvm-options>-XX:+UseConcMarkSweepGC</jvm-options>

此选项可能会降低吞吐量。