Hints and tips for configuring file store size
Preserving the appropriate amount of space within the log file, permanent store file, and temporary store file of a file store helps to ensure that operations and transactions behave as expected.
The default settings for the minimum and maximum sizes are most suitable if you are not using a dedicated disk for your file store because they protect the file store from other disk users, and also protect other disk users from the file store. The default settings are less appropriate if you have a disk that is dedicated to file store use, and in this case you might want to consider setting the maximum size set to unlimited.
Input/Output performance typically poses a significant challenge for file stores. Performance improvements can be achieved using dedicated disks for the file store to avoid contention.
If your file store is not on a dedicated disk, consider making the minimum and maximum sizes the same. Initially, the message store reserves the amount of space defined by the minimum setting. Therefore, if you use the same value for the maximum and minimum settings, it reduces the likelihood of other applications using the disk space that you intended for the file store usage. Setting the maximum size to a value other than unlimited reduces the likelihood of the file store using disk space that you intended for other applications usage. Other applications can include, for example, the application server itself.
The most significant performance gains can be derived by using disk hardware configured to ignore the flags set by the operating system to indicate that a synchronous write is required when a reliable battery backed storage device is used. Such a device can effectively maintain the logs in memory and store files so that the writes do not have to wait for physical disk movements. Rather the data written is stored in a cache, and the assurance that the data is not lost in the event of a failure comes from the disk vendor on the basis that the cache is reliable either due to the battery or some other reason.
- Log file size
- Data is first written to the log file sequentially, that is, new records are added to the end of the file. When the end of the log file is reached, old records at the beginning of the log file are overwritten by new records and this process repeats. Later, the data is written to the permanent store file and temporary store file. The exception is a short-lived data, which is only written to the log file.
- The log file size lays the limitation on the maximum size of messages that can be sent. A LogFileFullException is thrown if the log file is too small to handle large messages. The exception occurs because a single large message or multiple large messages are sent before the existing messages from the log file are moved to the permanent or temporary store files. The size of the log file needs to be increased if this exception is encountered; otherwise, the default size is sufficient. Only testing using the maximum message size and load expected can accurately determine whether the default size is too small. It is not always beneficial to simply allocate a larger log file size because the size of the log file is used by algorithms that control the internal workings of the file store. An overly large log file results in increased memory usage.
- Store File size
- The permanent store file and temporary store file each have a minimum reserved size and a maximum size. When they are created, the permanent and temporary store files consume their minimum reserved sizes, plus the size of the log. If the maximum size is set to a larger value than the minimum reserved size, the files grow up to the maximum size as required.
- The default store file sizes are sufficient. However, testing only with specific configurations can reveal what size store file might be required. This testing involves filling each queue point with messages of the largest expected size (until the message high limit threshold is reached) when the store file is set to unlimited. The store file size reached during this test, plus the log file size is usually a safe size to use as the maximum store file size.
- The store file maximum size is not intended to be the limit that prevents further messages being sent. This is because it is not only message data that is stored in the store file. Queue data and protocol state data is also stored in the store file. Instead, the high threshold of the queues must be used to prevent any more messages being sent.
- Once a store file is full, there is a remote chance that the store
might not be able to receive more data even if all the messages in
the store are consumed. This can happen if the log file size is over
half the size of the maximum store file size. A rule of thumb to minimize
the occurrence of this is to ensure that the minimum store file size
is double the log file size and that the maximum is twice the minimum
plus the size of the log file.
For example, if the log file size is 100 MB then the minimum store file size can be 200 MB (double the size of the log file), and the maximum size can be 500 MB (double the size of the minimum store file plus the log file).
The default configuration for file store attributes is intended to be sufficient to be used in typical messaging workloads without further administration. To improve the performance or availability of the log file or the two store files, you can configure the file store attributes to control where these files are placed. Similarly, you can configure the attributes that control the sizes of the log file and two store files, for example to handle workloads with many active transactions, large messages, or a large volume of message data resident in the messaging engine.
The following table shows the minimum and default values for file store attributes.
Attribute | Description | Minimum and default values |
---|---|---|
Log size | Size of the log file, in megabytes |
|
Minimum permanent store size | The minimum number of megabytes reserved by
the permanent store file. Note: The minimum store file size must always
be at least as big as the log file.
|
|
Maximum permanent store size | The maximum size in megabytes of the permanent
store file. Note: Consider making the maximum store file size double
the size of the log file. The maximum size of the store file must
always be larger than the log file. If the log file size is the same
as the maximum store file size then the messaging engine will not
start.
|
|
Minimum temporary store size | The minimum number of megabytes reserved by
the temporary store file. Note: The minimum store file size must always
be at least as big as the log file.
|
|
Maximum temporary store size | The maximum size in megabytes of the temporary
store file. Note: Consider making the maximum store file size double
the size of the log file. The maximum size of the store file must
always be larger than the log file. If the log file size is the same
as the maximum store file size then the messaging engine will not
start.
|
|
Unlimited permanent store size | Indicates whether the permanent store file is unlimited in size |
|
Unlimited temporary store size | Indicates whether the temporary store file is unlimited in size |
|
Log directory | Name of the directory that contains the log file |
|
Permanent store directory | Name of the directory that contains the permanent store file |
|
Temporary store directory | Name of the directory that contains the temporary store file |
|