Troubleshooting Transaction Router Performance Issues
The Transaction Router Siebel Remote server task might fail or exhibit slow performance, causing a backlog in the transactions routed to Siebel Remote mobile users and regional nodes.
Symptoms or Error Messages with Transaction Router Performance Issues
Symptoms of a Transaction Router performance issue might include:
- Mobile or connected users working on a regional node report that they're not seeing up-to-date data.
- There are numerous
.dxfiles in theSIEBEL_ROOT\Siebsrvr\Docking\txnprocfolder. - Increased memory usage of the Transaction Router process could eventually cause it to error.
Causes of Transaction Router Performance Issues
Here are three main causes of clear Transaction Router performance problems:
- Visibility-related transactions
These are most commonly created by position changes made in the UI or EIM. They can also be caused by running Generate Reporting Relationships.
- Docking rules and data distribution
- Slow running queries
Diagnostic Steps for Transaction Router Performance Issues
Monitoring Performance
The first step in diagnosing a Transaction Router performance issue is to identify the severity of the problem. Decide if transactions are just being routed slowly, or if mobile users and regional nodes are receiving no transactions at all.
To monitor Transaction Router performance, run the following SQL statement every 30 minutes on the Siebel server. This SQL statement provides, most importantly, the number of outstanding transactions to be routed to each node, along with the time when a particular node was last routed to:
SELECT NAME NODE, LAST_TXN_NUM, A.MAX_TXN_ID - LR.LAST_TXN_NUM TXNSTOROUTE, TO_CHAR (LR.LAST_UPD, 'DD-MON-YY HH24:MI:SS') LASTROUTED
FROM S_NODE N, S_DOCK_STATUS LR,
(SELECT MAX(TXN_ID) MAX_TXN_ID FROM S_DOCK_TXN_LOG) A
WHERE N.EFF_END_DT IS NULL
AND LR.NODE_ID = N.ROW_ID AND LR.TYPE = 'ROUTE' AND
LR.LOCAL_FLG = 'Y' AND LR.LAST_TXN_NUM != -1
ORDER BY LR.LAST_TXN_NUM;
For MS SQL Server and DB2
SELECT NAME NODE, LAST_TXN_NUM,
A.MAX_TXN_ID - LR.LAST_TXN_NUM TXNSTOROUTE,
LR.LAST_UPD LASTROUTED
FROM S_NODE N,
S_DOCK_STATUS LR,
(SELECT MAX(TXN_ID) MAX_TXN_ID FROM S_DOCK_TXN_LOG) A
WHERE N.EFF_END_DT IS NULL
AND LR.NODE_ID = N.ROW_ID AND LR.TYPE = 'ROUTE' AND LR.LOCAL_FLG = 'Y' AND LR.LAST_TXN_NUM != -1
ORDER BY LR.LAST_TXN_NUM
Review the results returned by the SQL statement, along with all the Transaction
Router log files. In Siebel applications version 6.x, 7.x and 8.x, the log files are
TxnRoute*.log. In Siebel applications version 5.x, they're
TxnRoute*.trc.
Examples of the Diagnostic Information in Transaction Router Performance Issues
Here are examples of the diagnostic information that can be gathered to help in identifying the causes listed above:
Visibility-Related Transactions
If the cause is visibility-related transactions, the Transaction Router log files usually won't contain any errors. Mobile users will be receiving transactions, but most likely at a reduced rate, for example:
2002-02-07 15:44:48 Client: DALEYJ, Read 49 files (102448-102496), Wrote 3 files (71905-71907)2002-02-07 15:44:48 Txns Read: 16505, Opers Read: 18290, Vis Opers Written: 5322002-02-07 15:44:48 Found 5994 Vis Event Opers, Found 4188 Vis Rel Event Opers2002-02-07 16:13:55 2002-02-07 16:13:55 Client: COWANC, Read 0 files (102448-102447)This log file shows this particular Transaction Router task processing 49 .dx files (00102448.dx to 00102496.dx) in the
SIEBEL_ROOT\Siebsrvr\Docking\txnproc folderfor one node namedDALEYJ. It took nearly 30 minutes to write three .dx files to this node's\outboxdirectory. Note that there several Visibility Related Event Operations (4188) that cause the Transaction Router to perform additional visibility checks against the database and can subsequently cause additional data downloads to the node.
txnutl. In the above example, you'd check files
00102448.dx to 00102496.dx. For more
instructions on using this utility, see Document KB562098. Once the .dx files have been translated with
txnutl, check the contents for insert, update, and delete
transactions on the following tables:- S_NODE_REL
- S_NODE_EMP
- S_POSTN_RPT_REL
- S_POSTN
- S_EMP_POSTN
- S_SHARED_EMP
- S_ORG_INT
Transactions on these tables can significantly affect Transaction Router performance -- this is expected behavior. Note that transactions on other tables might cause the Transaction Router to perform additional visibility checks against the database, but these tables are known to have a significant impact on performance.
Docking Rules and Data Distribution
If the cause is docking rules and data distribution, the Transaction Router log files might appear to hang at Iteration 0 where the last entry in the Transaction Router log files details the .dx file and transaction being processed, for example:
2002-02-01 18:12:57 ***** Iter: 02002-02-01 18:12:57 TxnProc lroute: file 3321, txn id 7264908
The Transaction Router might then continue to process without errors or might fail with error messages including:
- SBL-CSC-00106: Invalid file header expecting Siebel Tall/Skinny File
- SBL-CSC-00120: Not enough space in buffer cache
- SBL-CSC-00200: Cannot acquire spinlock hashWrite
- SBL-CSC-00301: Invalid value 0 for argument pVisDataInfo->createLatch
These error messages indicate that that the shared visibility database
visdata.dbf is corrupt. If there are multiple Transaction
Router tasks running on the Siebel server, all the log files should be reviewed for
the above errors, because it's most likely that only one of them will contain the
above error, while the others will contain the following:
SBL-CSC-00213: Invalid visibility database. Shutdown and restart all routers to rebuild.
If these above symptoms are seen, it's likely that mobile users and regional nodes will be receiving very few or no transactions. Docking rules and data distribution are the most likely cause. To confirm this, gather the following:
- Start a single Transaction Router task and have a DBA perform an RDBMS trace on the Transaction Router task
- Run the
visrulescript for the appropriate version of Siebel against the server database, following the directions below appropriate to your version of Siebel applications.
For Siebel 7 and 8: For Siebel 7 and 8 you can use a utility,
visrulediag, to generate these scripts automatically. To
generate a script using this utility, open a command prompt and navigate to the
SIEBEL_ROOT\SiebSrvr\bin directory. Run siebenv
set to set the environment parameters and issue the following
command:
>visrulediag /U username /P password /C datasource /D tableowner /M
G
The /M G specifies to generate a SQL script. By default the
threshold value /T will be 1000. At this point the utility will
prompt for the dock objects. For this troubleshooting step, enter:
>all.
This will generate the script to a file called visrulediag.sql in the SIEBEL_ROOT\SiebSrvr\bin directory. Run visrulediag.sql against the server database and send the results to Technical Support for review.
Slow Running Queries
If the cause is slow running queries, the Transaction Router log files usually won't contain any errors and mobile users will be receiving transactions, but most likely at a reduced rate, for example:
2001-12-11 16:03:17 Client: MENZIEJ2, Read 0 files (18354-18353), Wrote 1 files (7426-7426)2001-12-11 16:03:17 Txns Read: 24, Opers Read: 1047, Vis Opers Written: 32001-12-11 16:03:17 Found 0 Vis Event Opers, Found 0 Vis Rel Event Opers2001-12-11 16:08:18 Client: COLLIEJ2, Read 0 files (18354-18353), Wrote 1 files (5750-5750)This shows this particular Transaction Router task processing two .dx files (0018354.dx to 0018353.dx) in the
SIEBEL_ROOT\Siebsrvr\Docking\txnprocfolder, for one node namedMENZIEJ2. It took over 5 minutes to write one .dx file to this node's \outbox directory. Note there are no Visibility Related Event Operations, so this indicates that there might be a performance issue with a query being executed by the Transaction Router.
Queries can run slowly for many reasons including missing or corrupt indexes, table fragmentation, insufficient resources, and underlying RDBMS problems.
To investigate further, start a single Transaction Router task and have a DBA perform an RDBMS trace on the Transaction Router task. Review the RDBMS trace to decide if there are any long running queries that could be impacting the Transaction Router's performance, for example:
- Be suspicious of long running queries that return few rows instead of long running queries that return many rows.
- If there are several long running queries, be suspicious if all these queries involve a common table.
Solutions to Transaction Router Performance Issues
To improve Transaction Router performance, there are some initial steps that you should take:
- First, check that the paging file size on all Siebel server machines is 1.5 times the amount of physical RAM available. Also, monitor the CPU and memory usage on the Siebel server and database server machines for high utilization of either resource.
- Second, set the following Component parameters at the Transaction Router
Component level:
Id Db Size: 409600Node Division Factor: XId Db Sizespecifies the size of the shared visibility database. The maximum is 409600. Don't increase the size ofId Db Sizeabove 409600.Xequals the number of Transaction Router tasks that will be running on that application server. The first Transaction Router task should be started with the additional parameterId Db Recreate: TRUE.This will recreatevisdata.dbfwith the increased size above. It can improve Transaction Router performance. Later Transaction Router tasks can be started after the defaults have been set at the component level.Important: Starting in Siebel Version 8.x, both Transaction Processor and Transaction Router use the shared visibility databasevisdata.dbf, so make sure that theId Db Sizeparameter is the same for both components
If the above steps don't help improve Transaction Router performance, the following options are available for each of the identified causes:
- Visibility-Related Transactions: If the cause of the Transaction Router
performance problem is visibility-related transactions, then there are two
possible solutions:
- Re-extract all mobile users and regional nodes.
- Allow the Transaction Router server tasks to continue processing until the backlog is cleared. The backlog of transactions to route to each node will most likely increase until the Transaction Router has processed all the visibility-related transactions, and then the backlog will reduce more quickly. Starting more Transaction Router tasks will also increase performance, but be careful not to overload the Siebel server or database server machine by starting too many Transaction Router tasks.
- Docking Rules and Data Distribution: If the cause of the Transaction Router
performance problem appears to be docking-rule related, log a Service Request
with Siebel Technical Support and send the following diagnostic information in
for review:
- RDBMS trace of the Transaction Router task
- Transaction Router log file
- .dx files the Transaction Router is processing from the
SIEBEL_ROOT\siebsrvr\Docking\txnproc directory - The results of the
visrulescript
- In Siebel applications version 6.x, there were a few specific examples of
docking rules causing Transaction Router performance problems:
- In Siebel 2000, the Product Dock Object was changed to be of type Limited visibility rather than Enterprise. This has caused some customers to find Transaction Router performance issues particularly if there are numerous Assets associated with Products. Siebel Systems has recommended in some instances that the Product Dock Object should be set to Enterprise visible, which means that all Products will be downloaded to mobile users and regional nodes. In other instances, specific docking rules have been deactivated. The appropriate action depends on a particular customer requirements and data distribution.
- Transactions that update the table
S_SRC, which is part of the Source Dock Object, are incorrectly treated as a visibility-related events, causing the Transaction Router to perform unnecessary visibility checks. - Other docking rules have caused Transaction Router performance problems caused by data distribution, including rules for the Order and Organization Dock Objects.
- Slow Running Queries: If the cause of the Transaction Router appears to be a
poorly performing query, then work with the DBA to see if there are any obvious
underlying RDBMS reasons:
- Check that all the indexes are present and valid on the tables involved in the poorly performing queries. Check the relevant version of the Siebel Data Model to decide which indexes should be present.
- Check that the tables and indexes involved in the poorly performing queries aren't heavily fragmented.
Important Notes Around Solutions to Transaction Router Performance Issues
Here are some notes related to the solutions listed for resolving Transaction Router Performance Issues:
- The causes aren't an exhaustive list of potential Transaction Router performance issues.
- The causes aren't mutually exclusive. If you diagnose one cause, you should continue to investigate to ensure there are no more issues.
- You should also try to eliminate any other potential environment issues including operating system and network problems.
- Siebel strongly recommends that customers fully benchmark the Transaction Router
performance with realistic data quantities before going into production with a
new release or making significant changes in the amount or type of data to be
routed to mobile users and regional nodes.
For example, in production, you might plan to have 1,000 mobile clients and to regularly load 500,000 accounts via EIM, followed by running Batch Assignment. Fully test this scenario out in a test environment before rolling it out to your production environment. Similar testing should be carried out in a test environment when changing the Organizational hierarchy to avoid meeting a Transaction Router performance issue in your production environment.