Sun Java System Instant Messaging 7 2006Q1 发行说明

性能、可伸缩性和大小注意事项

本部分将在以下小节中介绍一些有用信息,这些信息对于在服务器池式配置中部署 Instant Messaging 时调试和性能有所帮助,也可以用于垃圾收集优化:

此信息应当同《Sun Java System Communications Services 6 2005Q4 Deployment Planning Guide》结合起来使用。


注意 – 注意 –

在服务器池部署中,需要对服务器池中的每个 Instant Messaging 服务器进行同样的设置。


调试 Instant Messaging 服务器内存

使用 J2SE 版本 5 运行 Instant Messaging 服务器,因为它性能较好并且支持人体工程学,从而不需要命令行调试。有关使用此版本 Java 的更多信息,可在以下文档中找到:

Instant Messaging 服务器使用 iim.conf 中的 iim.jvm.maxmemorysize 参数设置要分配的 JVM 堆的最大值。此参数的默认值是 256 MB,但对于较大的 Instant Messaging 活动部署则需要更大的内存。服务器池中的 Instant Messaging 服务器需要分配多大的内存,这取决于需要支持多少个同时活动的用户。服务器池中的每个 Instant Messaging 服务器需要 256 MB,而且每个已连接/活动用户需要 65 KB 以满足每日使用,如下所示:

每个用户的其他负载、使用其他的 Instant Messaging 服务(如新闻或文件传输)以及使用如消息过滤器、归档或 SSL 之类的功能都将消耗更大的内存。将 Instant Messaging 部署到产品环境之前,应当执行典型用户活动的负载配置。有关负载配置 Instant Messaging 部署的更多信息,请联系 Sun 支持服务。

线程池和服务端口配置

Instant Messaging 提供一组用于调整线程池(用于响应客户机与服务器之间的请求以及服务器与服务器之间的请求)大小和操作的配置选项。这些线程池连同相关的服务端口一起可提高 Instant Messaging 服务器的吞吐量。

选项名称 

说明 

默认值 

iim_server.maxthreads

默认线程池中线程的最大数量。 

20 

iim_server.threadpool

独立线程池列表。 

(均使用默认线程池。) 

iim_server.threadpool.capacity

默认线程池的容量 (*)。 

10 * maxthreads 

iim_server.threadpool.aaa.maxthreads

名称为 aaa 的线程池的最大线程数:

maxthreads(aaa)

iim_server.threadpool.aaa.capacity

名称为 aaa 的线程池的容量

10 * maxthreads(aaa) 

表 3 Instant Messaging 已定义的线程池

名称 

用途 

s2s-in 

所有服务器与服务器之间的入站通信。如果端口允许服务器与服务器之间的通信,则使用此线程池。 

s2s-out 

所有服务器与服务器之间的出站通信。如果端口允许服务器与服务器之间的通信,则使用此线程池。 

s2s 

所有服务器与服务器之间的通信;s2s-in 和 s2s-out 的联合。 

可指定已定义的线程池,并连同相关的仅用于服务器的服务端口一起使用,相关介绍可在服务端口配置中找到。

超出线程池容量时,将在标准错误中输出消息。直到请求数量小于线程池容量时,Instant Messaging 服务器才会接受对线程池的其他请求。如果此情形发生在服务器池式环境中,可能需要执行如下操作:


示例 1 使用已定义的线程池为 Instant Messaging 的服务器与服务器之间的入站通信保留五个线程


!s2s thread pool
iim_server.threadpool=s2s-in
iim_server.threadpool.s2s-in.maxthreads=5

服务端口配置

本部分将介绍若干服务端口配置选项。

选项 

定义 

默认值 

iim_server.useport

打开标准端口(允许 StartTLS) 

true 

iim_server.usesslport

打开 SSL 端口(不可协商的 TLS) 

false 

iim_server.usemuxport

打开多路复用器端口 

true 

iim_server.port

标准端口列表 

5269 

iim_server.sslport

SSL 端口列表 

5270 

iim_mux.serverport

多路复用器端口列表 

45222 

iim_server.port.port .sndbuf

套接字发送缓冲区大小

无 

iim_server.port.port .rcvbuf

套接字接收缓冲区大小

无 

iim_server.port.port .interface

要绑定的特定网络接口的列表 

无(表示任意值皆可) 

iim_server.port.port .protocol

此端口(客户机、服务器、组件、对等)上允许的协议列表 

所有/任意 

iim_server.port.port .nodelay

启用 Nagles 算法 

false 

通过调整端口的发送缓冲区大小或接收缓冲区大小,可增大服务端口的吞吐量。


示例 2 Instant Messaging 的服务端口配置


iim_server.port = 5269, 45269, 15222
iim_server.port.5269.protocol = server
iim_server.port.45269.protocol = peer, component
iim_server.port.45269.sndbuf= 512000
iim_server.port.45269.recvbuf= 512000
iim_server.port.15222.protocol = client 

为 Instant Messaging 调试垃圾收集

(问题编号:6279277)由于 1.4.2 版与 1.5 版 JRE 处理垃圾收集的方式不同,在服务器主机上使用 1.4.2 版本默认的垃圾收集器时,可能达不到最佳性能。要修复此问题,可将 JRE 升级到 1.5 版本,也可在调用服务器时包含以下命令行选项:


-XX:+UseParallelGC

有关 JRE 垃圾收集的更多信息,请参见: