Sun Java Communications Suite 5 发行说明

Instant Messaging 的性能、可伸缩性和大小调整注意事项

本部分针对在服务器池配置中部署 Instant Messaging 时的调节和性能,以及优化垃圾收集提供了一些有用信息,包括以下几个部分:

此信息应该与《Sun Java Communications Suite 5 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 部署到生产环境之前,应该对典型的用户活动执行负载分析。请联系 Sun 支持服务,以获取有关对 Instant Messaging 部署执行负载分析的详细信息。

Instant Messaging 线程池和服务端口配置

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) 

表 4–4 Sun Java Communications Suite 中定义的线程池

名称 

使用 

s2s-in 

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

s2s-out 

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

s2s 

所有服务器到服务器的通信;s2s-in 和 s2s-out 的结合。 

可以指定定义的线程池,并将其用于相关联的仅服务器服务端口,如服务端口配置中所述。可以在 iim.conf 中编辑线程和端口配置。在对线程和端口配置进行更改之后,需要重新启动服务器。

当超出线程池的容量时,将输出一个标准错误的消息。在请求数低于线程池容量值之前,Instant Messaging 服务器不会接受此线程池的任何其他请求。如果在服务器池环境中发生此情况,则您可能需要执行以下操作:


示例 4–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

套接字 send 缓冲区大小

无 

iim_server.port.port .rcvbuf

套接字 recv 缓冲区大小

无 

iim_server.port.port .interface

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

无(表示任何) 

iim_server.port.port .protocol

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

all/any 

iim_server.port.port .nodelay

启用 Nagles 算法 

false 

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


示例 4–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 版本的默认垃圾收集器时,可能无法获取最佳性能。要解决此问题,可以升级到 1.5 版本的 JRE,或者在调用服务器时包含以下命令行选项:


-XX:+UseParallelGC

有关 JRE 垃圾收集的详细信息,请参见以下内容: