Configuring When WIS Processes Cache Their Queues
The WQS/WIS processes maintain an in-memory cache of the information that each WIS
process contains about each work queue that it is handling. Caching this information allows the WIS
processes to respond quickly to RPC requests from client applications.
However, the amount of time that a WIS
process takes to start up is heavily influenced by the number of queues that it has to cache, the number of work items in the queue, the number of CDQPs defined in the queue, and the general load on the machine.
WIS
process is taking to start up using the plist -wV
command, which is under the SWDIR
\util
directory (see Monitoring the WIS Processes). The LastCacheTime
column shows the number of milliseconds that the WIS
process took to cache each queue when it was last cached.You can tailor this behavior to suit your particular requirements by configuring work queues to be cached either:
• | when they are first handled by a WIS process. This is when iProcess Engine starts up, or for queues that are added when the system is running, after a MoveSysInfo event request. Or, |
• | when they are first accessed by a client application. |
You control which queues are cached when they are first handled by a WIS
process by using a combination of the WISCACHE
queue attribute and the WIS_CACHE_THRESHOLD or RESTART_WIS_CACHE_THRESHOLD process attributes. When the WIS
process first handles a queue, it checks the value of the queue’s WISCACHE
attribute:
• | If WISCACHE is set to YES , the WIS process caches the queue (irrespective of how many work items the queue contains). |
• | If WISCACHE has not been created, or has not been set, the WIS process only caches the queue if the queue contains several work items that equal or exceed the value of the WIS_CACHE_THRESHOLD or RESTART_WIS_CACHE_THRESHOLD process attributes. |
WIS
process starts up, it reads the number of work items in each work queue from the total_items
column in the wqs_index
database table. This table is populated from the contents of the WQS/WIS shared memory, which is written to the database every WQS_PERSIST_SHMEM seconds.Any queue that is not cached now is cached when it is first accessed by a client application.
• | Queues are cached by a pool of threads in the WIS process. You can configure the number of threads in this pool by using the WIS_CACHE_POOL_SIZE |
• | When an RPC client application makes an RPC call to a work queue that has not already been cached, the WIS process immediately begins caching it. If the value of the WIS_CACHE_WAIT_TIME process attribute is reached and the work queue has still not been cached, the WIS process returns an ER_CACHING error to the client application. |
If the RPC client application is a TIBCO iProcess Workspace (Windows) session, the user will see the following message in the right-hand pane of the Work Queue Manager, instead of the expected list of work items:
The Work Item Server (WIS) is fetching the work items for this queue. Please wait...
• | The WISMBD process also makes RPC calls to WIS processes to pass instructions from the BG processes. If the WISMBD process receives an ER_CACHING error from the WIS process it retries the connection many times. If the attempt still fails, it requeues the message and writes a message (with ID 1984) to the sw_warn file, which is located in the SWDIR \logs directory. |
See TIBCO iProcess Engine System Messages Guide for more information about this message.
• | Configuring more work queues to be cached when they are first accessed improves the startup time for the WIS processes, but the potential cost is that users may have to wait to access their queues while they are being cached. |
Setting the WISCACHE Attribute for a Queue
The WISCACHE
queue attribute does not exist by default. If you want to use it, you must first create it and then assign a value for it to any queues that you want to use it. To do this:
1. | Start the Process Administrator, and then start the User Manager. (See “Using TIBCO iProcess Administrator” in TIBCO iProcess Workspace (Windows) Manager's Guide for more information.) |
2. | Define a new attribute called WISCACHE . This should have a Type of Text, with a Length of 4. |
See “Adding a New Attribute” in TIBCO iProcess Workspace (Windows) Manager's Guide for more information.
3. | Assign a value of YES to WISCACHE for each queue that you want to be cached when the WIS process first handles it (irrespective of how many work items the queue contains). |
All other queues (for which WISCACHE
is not set) will be cached either when the WIS
process first handles it or when they are first accessed by a client application, depending on the value of the WIS_CACHE_THRESHOLD process attribute.
See “Setting User Values for an Attribute” in TIBCO iProcess Workspace (Windows) Manager's Guide for more information.
4. | Save your changes, exit from User Manager, and perform a MoveSysInfo to register your changes on iProcess Engine. |
See “Moving System Information” in TIBCO iProcess Workspace (Windows) Manager's Guide for more information.