11.1.6 Tunable Message Parameters
A properly tuned system rarely fills its queues. Enough slack should be left in the queues to handle the natural variability of the message flow. No exact settings can be recommended. Tuning is very application dependent. The UNIX ipcs(1)
command provides a snapshot of the queues so you can determine whether they are full. You can try setting the TPNOBLOCK
flag when sending requests. If you do, clients can tell when queues are full, and they can slow down a bit. It might help to increase the scheduling priority of servers with full request queues.
The following message parameters may need to be adjusted:
-
MSGMNI
- Number of unique message queue identifiers. Each process participating in an Oracle Tuxedo application on a particular machine typically needs at least one message queue. This number is reduced if MSSQ sets are used, which means that multiple server processes share a single queue. For transaction processing, count an additional queue per server group for transaction manager server (TMS) processes. Thus, the minimum requirement for
MSGMNI
can be determined by the following formula: -
MSGMAX
- Maximum message size in bytes.
MSGMAX
must be big enough to handle any Oracle Tuxedo application running on this machine. -
MSGMNB
- Maximum message queue length in bytes. This number must accommodate the total size of all messages that are on a queue and have not been taken off by the associated processes. The minimum value for
MSGMNB
is the value ofMSGMAX
. Messages longer than 75% ofMSGMNB
are sent to a file instead of a message queue—a situation that should be avoided because it severely degrades performance. -
MSGMAP
- Number of entries in the control map used to manage message segments. The value of
MSGMAP
should be the number of message segments (specified inMSGSEG
). - MSGSSZ
- Size, in bytes, of a message segment. A message can consist of several such segments. The value of
MSGSSZ
should be such that a multiple ofMSGSSZ
is equal to the size (including the Oracle Tuxedo system header) of the most commonly sent message. By dividing messages into segments in this way, you can avoid wasting space. -
MSGSEG
- Number of message segments in the system.
-
MSGTQL
- Total number of outstanding messages that can be stored by the kernel. This is the maximum number of unread messages at any given time.
Parent topic: Parameter Sets Controlling IPC Resources