Running Policy Server, the performances of the DB queue processing is slow.

Document ID : KB000007915
Last Modified Date : 14/02/2018
Show Technical Document Details
Issue:

Running the Policy Server traces analyser, we discovered that when the

Normal Queue is piling up, the Policy Server has problem to handle the

DB queue. In this sample, it takes 10 seconds to process a single ODBC

request :

 

TransReport.pdf 

 

The execution of the ODBC statement starts at 15:59:28.148

 

[04/24/2016][15:59:28.148][26911][73][ Executing statement''] 

  [15:59:28][SmDsOdbcProvider.cpp:987][SmDsOdbcProvider::Search][][][][][][] 

  [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] 

  [][][][][][][select ATTR1,ATTR2,ATTR3,NAME,USER_ID from SM_USERS_VIEW where 

  Name=? and DOMAIN='MYDOMAIN']

  [][][][][][][][] 

 

[04/24/2016][15:59:28.148][26911][73][ Enter function CSmDbServerSession::GetConnection] 

  [15:59:28][CSmDbServerSession.cpp:347][CSmDbServerSession::GetConnection][][][][][][] 

  [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] 

  [][][][][][][][][][] 

 

[04/24/2016][15:59:28.148][26911][73][ Report connections status for data source 

  'mydatasource' and user 'myadmin'][15:59:28][CSmDbServerSession.cpp:594] 

  [CSmDbServerSession::GetConnection][][][][][][][][][][][][][][][][][][][] 

  [50 connections, 49 active with 49 sessions, 0 available, 0 hung, 1 starting.][][][][][] 

  [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] 

 

[04/24/2016][15:59:28.148][26911][73][ Leave function CSmDbServerSession::GetConnection] 

  [15:59:28][CSmDbServerSession.cpp:622][CSmDbServerSession::GetConnection][][][][][][][][][][][][][- 

  1024][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] 

  [][][00:00:00.000481][] 

 

And here it takes to 10 seconds to process the Queued Request : 

 

[04/24/2016][15:59:28.165][26911][73][ Queueing request.][15:59:28] 

  [CSmDbUtilities.cpp:862][CSmDbWaiter::Wait][][][][][][][][][][][] 

  [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] 

 

[04/24/2016][15:59:28.165][26911][73][ Waiting for Queued Request.][15:59:28] 

  [CSmDbUtilities.cpp:878][CSmDbWaiter::Wait][][][][][][][][][][][][][][][][][][][][][][][][][] 

  [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] 

 

[04/24/2016][15:59:38.745][26911][73][ Queued request completed successfully.][15:59:38] 

  [CSmDbUtilities.cpp:898][CSmDbWaiter::Wait][][][][][][][][][][][][][][][][][][][][][][][][][] 

  [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] 

 

How can we solve this and avoid those delays ?

Environment:
Policy Server 12.52SP1CR01 on SunOS 5.10; Policy Store on ODBC Oracle 10g;
Cause:

The cause of this behavior is that the traces are printed very regularly

during the DB connection processing, and these ones are under Lock synchronization,

which lead to delays.

 

We modified the code to move the traces out from Lock() section. 

 

We modified also the tracing component from Internal to

SmOdbcComponent::Monitor so that only needed critical info can be

traced.

 

Resolution:

Issue fixed in 12.52SP1CR06

https://docops.ca.com/ca-single-sign-on/12-52-sp1/en/release-notes/cumulative-releases/defects-fixed-in-12-52-sp1-cr06#DefectsFixedin12.52SP1CR06-PolicyServer

 

Optimization of DB connection management.

 

00354719 - DE166084

Performance issues were observed in Policy Server during the DB connection processing requests.