上一章 目录 索引 下一章 |
Sun Java System Message Queue 3.5 SP1 管理指南

> ## 附录 E
> 技术说明

> 本附录包含有关以下主题的简短说明：

> - 系统时钟设置
> - OS 定义的文件描述符限制
> - 确保持久性数据的安全

> ##

> 系统时钟设置

> 使用 Message Queue 系统时，在同步系统时钟时应小心，避免将它们设置为早于当前时间。

> ### 建议同步

> 建议您同步所有与 Message Queue 系统交互的主机上的时钟。这在使用消息失效期 (TimeToLive) 时尤为重要。同步主机时钟失败可能导致 TimeToLive 无法按预期方式工作（消息可能无法传送）。您应在启动任何代理之前同步时钟。

> Solaris 可以在本地主机上运行 rdate 命令以与远程主机达到同步。（必须为超级用户（即 root 用户）才能运行此命令。）例如，以下命令将使本地主机（称为 Host 2）与远程主机 Host1 同步：

> # rdate Host1

> Linux 命令类似于 Solaris，但必须提供 -s 选项：

> # rdate -s Host1

> Windows 可以运行带有时间子命令的网络命令将本地主机与远程主机同步。例如，以下命令将本地主机（称为 Host 2）与远程主机 Host1 同步：

> net time \\Host1 /set

> ### 避免将系统时钟设置为早于当前时间

> 应避免在运行 Message Queue 代理的系统上将系统时钟设置为早于当前时间。Message Queue 使用时间戳来帮助标识诸如事务和长期订阅这样的内部对象。如果系统时钟设置为早于当前时间，理论上有可能生成重复的内部标识符。代理将尝试通过为标识符引入一些随机性以及通过在运行时检测时钟偏差来补偿这种情况，但是如果代理未运行时将系统时钟调整为远远早于当前时间，则会有少量出现标识符重复的可能性。

> 如果需要在运行代理的系统上将系统时钟设置调整为早于当前时间若干秒钟，建议您在没有事务和长期订阅，或在代理没有运行时执行此操作，然后在代理进行备份之前等候一段时间（时钟偏差的时间）。

> 不过最理想的方法是在启动任何代理前先同步时钟，然后使用适当的技术确保部署后时钟不会明显出现偏差。

> ##

> OS 定义的文件描述符限制

> 在 Solaris 和 Linux 平台上，客户机或代理在其中运行的 shell 对客户机可以使用的文件描述符的数量进行了不严格的限制。在 Message Queue 系统中，客户机创建的每个连接，或代理接受的每个连接都使用其中一种文件描述符。每个具有持久性消息的目的地也使用文件描述符。

> 因此，连接数由这些因素限制。如果不更改文件描述符限制，Solaris 上代理或客户机运行的连接不能超过 256 个，Linux 上不能超过 1024 个。（连接限制实际上要少一些，因为使用文件描述符可保持持久。）

> 要更改文件描述符限制，请参见 ulimit 手册页。此限制需在要执行客户机或代理的每个 shell 中更改。

> ##

> 确保持久性数据的安全

> 代理使用持久性存储库，它包含与其他信息一起临时存储的消息文件。由于这些消息可能包含专用信息，所以建议您保护数据存储以防止未授权的访问。

> 代理可以使用内置的持久性，也可以使用插入的持久性。

> ### 内置持久性存储库

> 使用内置持久性的代理将持久性数据写入平面文件数据存储，它所在的目录因平台而异（请参见附录 A“Message Queue 数据的位置”）：

> /instances/instanceName/fs350/

> 其中，instanceName 为标识代理实例的名称。

> 第一次启动代理实例时，将创建 instanceName/filestore/ 目录。保护此目录的过程取决于运行代理的操作系统。

> Solaris 和 Linux IMQ_VARHOME/instances/instanceName/filestore/ 目录的访问权限取决于启动代理实例的用户的 umask。因此，可以通过适当设置 umask 来限制获取启动代理实例并读取其持久性文件的权限。或者，管理员（超级用户）可以通过将 IMQ_VARHOME/instances 目录上的权限设为 700 来保护持久性数据。

> Windows 可以通过您使用的 Windows 操作系统提供的机制来设置 IMQ_VARHOME/instances/instanceName/filestore/ 目录的访问权限。这通常涉及打开目录的属性对话。

> ### 插入的持久性存储库

> 使用插入的持久性的代理向 JDBC 兼容数据库写入持久性数据。

> 对于由数据库服务器管理的数据库（例如，Oracle 数据库），建议创建一个用户名和密码来访问 Message Queue 数据库表（名称以 IMQ 开头的表）。如果数据库不允许保护单个表，请创建一个仅由 Message Queue 代理使用的专用数据库。请参见数据库供应商提供的文档，以了解如何创建用户名/密码访问。

> 代理打开数据库连接所需的用户名和密码可以作为代理配置属性提供。但是，启动代理时将它们作为命令行选项更为安全（请参见《Message Queue 管理指南》的附录 A设置插入的持久性）。

> 对于代理通过数据库的 JDBC 驱动程序直接访问的嵌入式数据库（例如，Cloudscape 数据库），通常通过在要存储持久性数据的目录上设置文件权限（如以上“内置持久性存储库”中所述）来提供安全性。为确保代理和 imqdbmgr 实用程序都可以读写数据库，无论如何，两者均应由同一用户运行。

> 上一章 目录 索引 下一章

> 版权所有 2004 Sun Microsystems, Inc. 保留所有权利。