Sun ONE Portal Server 6.2 安装指南 |
第 4 章
微调 Sun ONE Portal Server本章介绍优化 Sun ONE Portal Server 的性能和容量的配置参数。与 Sun ONE Portal Server 捆绑在一起的 perftune 脚本(位于 portal-server-install-root/SUNWps/bin 目录下)将自动完成本章所述的微调进程的大部分操作。
简介perftune 脚本:
- 微调 Solaris 操作系统 Kernel 和 TCP 设置(请参阅 Solaris 微调)
- 作为下列微调进程的一部分,修改以下配置文件:
- 修改 Sun ONE Portal Server 桌面服务和 Sun ONE Identity Server 验证服务的属性。
微调策略运行 perftune 脚本时,为两个典型的用法方案提供性能微调选项。这两个方案分别称为“最优产量”和“最大产量”。定义这些方案着重大多数 Sun ONE Portal Server 用法模式。这些部署方案具有以下特点:
例如,在连接到企业门户的业务高峰时间,在最大产量的环境中,会有相当数量的公司雇员在同一时间连接到门户。
内存分配每个 JVM 可分配的内存的最大容量由两个参数决定:
使微调生效的 JVM 性能矩阵着眼于剩余投入、覆盖区域和反应速度(在下面定义)。第二列、第三列和第四列分别显示最优产量环境和最大产量环境在剩余投入、覆盖区域和反应速度领域的性能级别。
其中:
微调指导运行 perftune 脚本时,可指定是否执行以下微调建议。仔细查看建议并使用 perftune 脚本执行这些建议修改。
要运行 perftune 脚本:
在微调进程期间,perftune 脚本执行服务器的启动和停止操作。此脚本将以 filename-orig-date-pid 格式来创建已修改文件的副本。在运行脚本使微调后重新启动系统以使更改生效。
Solaris 微调
Kernel 微调
脚本向 /etc/system 文件追加以下设置:
TCP 参数微调
在 /dev/tcp 中对 TCP 参数(在圆括号中显示)的更改包括:
- TCP 时间等待间隔 (tcp_time_wait_interval) - 关闭连接后,TCP 套接字保持 TIME_WAIT 状态的时间长短设置为 60000
- TCP 完成等待 2 间隔 (tcp_fin_wait_2_flush_interval) - 关闭连接后,TCP 套接字保持 FIN_WAIT_2 状态的时间长短设置为 60000
- TCP 最大连接大小 (tcp_conn_req_max_q) - 完全建立的连接的最大数目设置为 8192
- TCP 列表队列 (tcp_conn_req_max_q0) - 包含未建立的连接的队列的大小设置为 8192
- TCP 信息包丢弃时间 (tcp_ip_abort_interval) - 在丢弃信息包之前的时间长短设置为 60000
- TCP 保活间隔 (tcp_keepalive_interval) - 此参数设置为 90000
- TCP 转发最大间隔 (tcp_rexmit_interval_max) - 此参数设置为 6000
- TCP 转发最小间隔 (tcp_rexmit_interval_min) - 此参数设置为 3000
- TCP 转发初始间隔 (tcp_rexmit_interval_initial) - 此参数设置为 500
- TCP 最小匿名端口 (tcp_smallest_anon_port) - 此参数设置为 1024
- TCP 慢启动算法的初始信息包 (tcp_slow_start_initial) - 此参数设置为 2
- TCP 传输/接收缓冲器大小限量(tcp_xmit_hiwat 和 tcp_recv_hiwat)- 每个参数均设置为 32768
为了在重新启动系统时自动执行 ndd 命令,perftune 脚本将 S99ndds_tcp 文件复制到 /etc/rc2.d/ 目录中。
Sun ONE Identity Server 微调
Directory Server 连接池
以下是对 portal-server-install-root/SUNWam/config/ums/serverconfig.xml 文件所做的更改:
LDAP 验证服务
LDAP 验证
Sun ONE Identity Server 服务配置参数
以下是对 portal-server-install-root/SUNWam/lib/AMConfig.properties 文件所做的更改:
/opt/SUNWam/lib/AMConfig.properties 文件中的以下线程池属性将在 Sun ONE Portal Server 6.2 中介绍:
Sun ONE Directory Server 微调
如果 Sun ONE Directory Server 由其它应用程序共享,则可能需要检查这些参数与其它应用程序的参数微调不发生冲突。
必须为 /tmp/slapd-DSinstance1 提供足够的虚拟内存空间,并且为避免内存分页,所用内存的总空间大小(包括为数据库高速缓存分配的内存空间)必须不超过物理内存的容量。在任何情况下,slapd 进程本身占用的 nsslapd-dbcachesize + nsslapd-cachememsize + fixed memory 的累计值不能超过 4 GB 的处理地址空间。Nslapd 是 32 位应用程序。
关于资源池(连接和线程)的大小,Sun ONE Directory Server 以为搜索类型的操作提供大约 15 的并发级别提供最优性能。
perftune 脚本将按如下方式微调映射在 /var/opt/mps/serverroot/slapd-hostname/config/dse.ldif 文件中的 ns-slapd 线程、db cache 和数据库文件系统:
Sun ONE Web Server 6.0 微调
下面说明由 perftune 脚本提供的“JVM 微调”,可帮助您微调 Sun ONE Web Server,以提高 Sun ONE Portal Server 在“最优产量”和“最大产量”环境中的性能。
最优产量
堆栈容量
堆栈容量是需要注意的最重要的选项。有关这些参数的详细信息,请参阅 Sun ONE Web Server 微调指南。perftune 脚本:
- 在位于 web-server-install-root/SUNWwbsvr/https-hostname/config 的 magnus.conf 中指定下列各项
- 在位于 web-server-install-root//https-/hostname//config 的 web-apps.xml 文件中指定下列各项(修改值以粗体显示)。即:
- 在 web-app 标签上定义下列会话管理器:
<session-manager class="com.iplanet.server.http.session.IWSSessionManager>
<init-param>
<param-name>maxSessions</param-name>
<param-value>50000</param-value>
</init-param>
<init-param>
<param-name>timeOut</param-name>
<param-value>360</param-value>
</init-param>
<init-param>
<param-name>reapInterval</param-name>
<param-value>180</param-value>
</init-param>
</session-manager>
- 如果预期的并发会话数目超过此参数值,则增加 maxSession(默认值是 50000)。
- 将类再加载间隔定义为 5 分钟(默认值是 30 秒钟)
<class-loader classpath="[...]" delegate="false" reload-interval="300"/>
- 在位于 web-server-install-root//https-/hostname//config 的 server.xml 文件中为“JVM 微调”指定下列各项
- 在 start-jvm 文件中为替代 T2 libthread 指定下列各项
NSES_JRE_RUNTIME_LIBPATH=/usr/lib/lwp:${NSES_JRE}/lib/sparc/server:${NSES_JRE}/lib/sparc:${NSES_JRE}/lib/sparc/classic:${NSES_JRE}/lib/sparc/native_threads;export NSES_JRE_RUNTIME_LIBPATH
最大产量
- 在位于 web-server-install-root/SUNWwbsvr/https-hostname/config 的 magnus.conf 中指定下列各项
- 在位于 web-server-install-root//https-/hostname//config 的 web-apps.xml 文件中指定下列各项。
- 按如下方式在 web-app 标签上定义会话管理器:
<session-manager class="com.iplanet.server.http.session.IWSSessionManager>
<init-param>
<param-name>maxSessions</param-name>
<param-value>50000</param-value>
</init-param>
<init-param>
<param-name>timeOut</param-name>
<param-value>360</param-value>
</init-param>
<init-param>
<param-name>reapInterval</param-name>
<param-value>180</param-value>
</init-param>
</session-manager>
- 如果预期的并发会话数目超过此参数值,则增加 maxSession(默认值是 50000)。
- 在位于 web-server-install-root//https-/hostname//config 的 server.xml 文件中为“JVM 微调”指定下列各项
jvm.minHeapSize=1073741824
jvm.maxHeapSize=2147483648
jvm.option=-Xrs
jvm.option=-server
jvm.option=-XincGC
jvm.option=-XX:+UseLWPSynchronization
jvm.option=-XX:MaxPermSize=128M
jvm.option=-XX:PermSize=128M
jvm.option=-XX:+OverrideDefaultLibthread
jvm.option=-XX:MaxNewSize=256M
jvm.option=-XX:NewSize=256M
- 在 start-jvm 文件中为替代 T2 libthread 指定下列各项
NSES_JRE_RUNTIME_LIBPATH=/usr/lib/lwp:${NSES_JRE}/lib/sparc/server:${NSES_JRE}/lib/sparc:${NSES_JRE}/lib/sparc/classic:${NSES_JRE}/lib/sparc/native_threads;export NSES_JRE_RUNTIME_LIBPATH
注意
如果在应用程序服务器网络容器上部署 Sun ONE Portal Server,安装脚本为在其上安装 Sun ONE Portal Server 的应用程序服务器实例将 JVM 最大堆栈容量和最小堆栈容量更改为 128 MB。要使用不同的最小和最大 JVM 堆栈容量,请转至 Application Server 管理控制台,然后设置所需的最小和最大 JVM 堆栈容量。
Sun ONE Application Server 7.0 微调
当在 Sun ONE Application Server 上部署 Sun ONE Portal Server 时,会设置应用程序服务器实例的最小和最大堆栈容量。
就 J2SDK 1.4.1_01 和 1.4.2 而言,Sun ONE Application Server 7.0 建议使用的 JVM 选项如下所示。
如果用作服务器的机器仅能够提供 4 GB 的物理内存,则可使用值 -Xms2048M 而不是 -Xms3072M;仅有 4 GB 的物理内存,如果设置为 -Xms3072M,则将不能启动 JVM。这些 JVM 选项将覆盖由 perftune 脚本设置的 JVM 选项。
JVM 参数的完整集合包括:
设置附加 Sun ONE Application Server 参数保证网关可靠性
欲利用 Secure Remote Access 使网关达到最佳性能,请按如下方式配置实现:
- 修改 identity-server-install-root/SUNWam/lib/configAmConfig.properties 文件来设置应用程序服务器的通知线程池容量大小。在文件顶部的如下几行下面:
Sun, Sun Microsystems, the Sun logo, and iPlanet
* are trademarks or registered trademarks of Sun Microsystems,
* Inc. in the United States and other countries.
添加以下几行,将线程池的容量设置为 200:
/*通知线程池容量*/ com.iplanet.am.notification.threadpool.size=200
- 使用用户名 amadmin 和安装期间输入的长口令登录到 Portal Server 管理控制台。
- 在“视图”菜单中选择“服务管理”。
- 选择“SRA 配置”,然后选择“网关”。
- 选择默认的服务器,然后单击“编辑”。
- 选中“启用 HTTP 连接”复选框。
- 在“HTTP 端口”字段中,键入 80,然后单击“保存”。
- 通过在浏览器的网络地址字段中输入 http://fullservername:port,以管理员 (admin) 的身份登录到 Sun ONE Application Server 管理控制台。默认端口为 4848。使用安装时输入的口令。
- 选择安装 Identity Server 的应用程序服务器实例。
- 单击“JVM 设置”,然后单击“JVM 选项”。
- 在“JVM 选项”字段中,输入以下字符串:
-Dhttp.keepAlive=false
- 单击“添加”,然后单击“保存”。
- 选择将要安装 Portal Server 的应用程序服务器实例。
右侧窗格显示配置已发生更改。
- 单击“应用更改”。
- 单击“重新启动”。
- 应用程序服务器会自动重新启动。
- 在安装网关的服务器上,转至 /opt/SUNWps/bin/perf 目录,然后输入以下内容来运行用以为 Secure Remote Access 设置微调参数的脚本:
./srapperftune
- 修改 identity-server-install-root/SUNWam/lib/configAmConfig.properties 文件来设置网关的通知线程池容量大小。在文件顶部的如下几行下面:
Sun, Sun Microsystems, the Sun logo, and iPlanet
* are trademarks or registered trademarks of Sun Microsystems,
* Inc. in the United States and other countries.
添加以下几行,将线程池的容量设置为 200:
/*通知线程池容量*/ com.iplanet.am.notification.threadpool.size=200
- 转至 /opt/SUNWps/bin 目录,然后修改网关文件,设置 -Dhttp.keepAlive 选项为 false,并增加 -Xms 和 -Xmx 的堆栈容量选项设置。
默认情况下,srapperftune 脚本将 -Xms 和 -Xmx 堆栈容量选项设置为 1024。在定义 CMD 设置选项行,将 -Xms 和 -Xmx 选项中所定义的默认值增加到 2048,并添加字符串 -Dhttp.keepAlive=false。例如,正确的各行内容为:
CMD="$JAVA_HOME/bin/java -server -Xms2048M -Xmx2048M -XX:+OverrideDefaultLibthread -XX:ThreadStackSize=128 -XX:MaxPermSize=128M -XX:PermSize=128M -XX:MaxNewSize=256M -XX:NewSize=256M -Dhttp.keepAlive=false -classpath ${CLASSPATH} $DEFINES $PROXY_DEFINES $INSTANCE_DEFINES com.sun.portal.netlet.eproxy.EProxy"
- 修改 /etc/opt/SUNWps/platform.conf.default 文件,设置 gateway.protocol 参数为 http,设置 gateway.port 参数为端口 80,如下所示:
gateway.protocol=http
gateway.port=80
- 要使更改生效,需要键入以下命令来重新启动网关:
portal-server-install-root/SUNWps/bin/gateway -n default start
- 其中,default 是安装期间所创建的默认网关配置文件。
Sun ONE Portal Server 桌面微调
最优产量
最大产量
使用 caller 参数指定通过提供者提供内容的线程池的大小。调用池大小初始化为 0。使用和返回项目时将项目添加到池。调用池的大小会扩展为很大。可是,在正常情况下其大小仅能扩展到与用户的“门户桌面”上的频道的数目一样大。在有多个并发线程使用相同的 sid 情况下,池可能扩展到大小 n * m,其中 n = 并发的相同 sid 线程的数目,m = 对于给定的 sid,“门户桌面”上的频道的数目。
为优化“提供者调用资源池”,perftune 脚本在 /etc/opt/SUNWps/desktop/desktopconfig.properties 文件中更改以下参数:
当执行长运行测试时,要减少由于派生的“门户桌面”调用线程而增加的不必要的内存空间,必须将这些属性(除 templateScanInterval 以外)更改回其原始的默认值。
对这些属性进行下列更改: