Open topic with navigation

TIBCO iProcess® Engine 11.9.1

# Configuring When WIS Processes Cache Their Queues

Draft comments: WIS cache on demand introduced in 10.4 by CR16621.

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.

Note: You can monitor how long a `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.

Note: When the `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.

Note:

| • | 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 T IBCO 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.

Did you find this helpful?

Yes No
Great!
Thanks for taking the time to give us some feedback.
Sorry about that

Why wasn't this helpful? (check all that apply)

Could not find what I was looking for
Instructions confusing or unclear
Instructions did not work

Want to tell us more?

Please select at least one option or provide details about the issue!!

Error occurred while submitting feedback.

Error2 occurred while submitting feedback.

TIBCO iProcess® Engine

Copyright © 1994-2024. Cloud Software Group, Inc. All Rights Reserved.