配置文件存储器大小的提示及技巧
在文件存储器的日志文件、永久存储文件和临时存储文件中保留适当的空间有助于确保操作和事务具有预期的行为。
如果未对文件存储器使用专用磁盘,最小和最大大小的缺省设置是最合适的,原因是他们可保护文件存储器以阻止其他磁盘用户,同时保护其他磁盘用户以阻止文件存储器。如果已有专供文件存储器使用的磁盘,那么缺省设置不太合适,并且在此情况下,您可能会考虑将最大大小设置为无限。
输入/输出性能对于文件存储器通常是极大的挑战。可以通过为文件存储器使用专用磁盘以避免争用来改进性能。
如果文件存储器不在专用磁盘上,请考虑使最小大小和最大大小相同。一开始,消息存储保留最小设置定义的空间量。因此,如果对最大设置和最小设置使用相同的值,那么会降低其他应用程序使用您计划供文件存储器使用的磁盘空间的可能性。将最大大小设置为无限以外的值可降低文件存储器使用您计划供其他应用程序使用的磁盘空间的可能性。例如,其他应用程序可能包括应用程序服务器本身。
当使用由电池供电的可靠存储设备时,使用以下方法可最大程度地改进性能:使用配置为忽略操作系统设置的某些表示需要同步写操作的标志的磁盘硬件。此类设备可以在内存和存储文件中高效维护日志,这样写操作不必等待物理磁盘移动。写入的数据存储在高速缓存中,当发生故障时,在高速缓存可靠(由于电池或某些其他原因)的基础上,数据不会丢失的保证来自于磁盘供应商。
- 日志文件大小
- 首先按顺序将数据写入日志文件(即,将新记录添加到文件末尾)。到达日志文件末尾后,新记录就会覆盖日志文件开头的旧记录,此过程将反复进行。随后,数据将写至永久存储文件和临时存储文件。有效时间短的数据例外,这些数据仅写至日志文件。
- 日志文件大小限制了可发送的消息的最大大小。如果日志文件太小,而无法处理大型消息时,将抛出 LogFileFullException。发生此异常的原因是在将日志文件中的现有消息移至持久存储文件或临时存储文件之前发送了单条大型消息或多条大型消息。如果遇到该异常,需要增加日志文件的大小;否则,缺省大小应足够大。只有通过使用最大消息大小和预期负载进行测试,才能准确确定缺省大小是否太小。因为控制文件存储器内部工作的算法会使用日志文件的大小,所以仅仅分配较大的日志文件大小并非总是有益的。过大的日志文件会导致内存使用增加。
- 存储文件大小
- 永久存储文件和临时存储文件都具有最小保留大小和最大大小。创建永久存储文件和临时存储文件时,他们的大小将是最小保留大小加上日志大小。如果最大大小设置为比最小保留大小更大的值,那么这些文件将根据需要增大到最大大小。
- 缺省存储文件大小足够大。但是,只有对特定配置进行测试才能显示存储文件可能需要的大小。该测试包括当存储文件设置为无限时,使用最大预期大小的消息填充所有队列点(直到达到消息上限阈值为止)。将该测试中达到的存储文件大小加上日志文件大小,通常是用作最大存储文件大小的安全大小。
- 存储文件最大大小不应该是防止发送更多消息的限制。这是由于在存储文件中不仅存储消息数据。队列数据和协议状态数据也存储在存储文件中。而必须改用队列的高阈值来防止发送任何更多消息。
- 一旦存储文件已满,即使耗用了存储器中的所有消息,存储器也几乎不太可能接收更多数据。如果日志文件大小超过最大存储文件大小的一半,那么可能发生此情形。一种凭经验的方法是确保最小存储文件大小是日志文件大小的两倍,最大值是最小值加上日志文件大小的两倍。
例如,如果日志文件大小是 100 MB,那么最小存储文件大小可以是 200 MB(日志文件大小的两倍),最大大小可以是 500 MB(最小存储文件大小加上日志文件的两倍)。
文件存储器属性的缺省配置足以适应典型的消息传递工作负载,并且不需要进一步的管理。要提高日志文件或两个存储文件的性能或可用性,可配置文件存储器属性以控制这些文件的存储位置。同样,可配置控制日志文件及两个存储文件大小的属性,例如,以处理许多活动事务、大型消息或消息传递引擎中包含的大量消息数据带来的工作负载。
下表显示文件存储器属性的最小值和缺省值。
属性 | 描述 | 最小值和缺省值 |
---|---|---|
日志大小 | 日志文件的大小(以兆字节计) |
|
最小永久存储器大小 | 永久存储文件保留的最小兆字节数。 注: 最小存储文件大小必须始终至少与日志文件一样大。
|
|
最大永久存储器大小 | 永久存储文件的最大大小(以兆字节计) 注: 请考虑使最大存储文件大小两倍于日志文件的大小。存储文件的最大大小必须始终大于日志文件。如果日志文件大小与最大存储文件大小相同,那么消息传递引擎不会启动。
|
|
最小临时存储器大小 | 临时存储文件保留的最小兆字节数。 注: 最小存储文件大小必须始终至少与日志文件一样大。
|
|
最大临时存储器大小 | 临时存储文件的最大大小(以兆字节计) 注: 请考虑使最大存储文件大小两倍于日志文件的大小。存储文件的最大大小必须始终大于日志文件。如果日志文件大小与最大存储文件大小相同,那么消息传递引擎不会启动。
|
|
永久存储器大小不受限 | 指示永久存储文件的大小是否不受限制。 |
|
临时存储器大小不受限 | 指示临时存储文件的大小是否不受限制。 |
|
日志目录 | 包含日志文件的目录的名称 |
|
永久存储器目录 | 包含永久存储文件的目录的名称 |
|
临时存储器目录 | 包含临时存储文件的目录的名称 |
|