EducationSoftwareStrategy.com
StrategyCommunity

Knowledge Base

Product

Community

Knowledge Base

TopicsBrowse ArticlesDeveloper Zone

Product

Download SoftwareProduct DocumentationSecurity Hub

Education

Tutorial VideosSolution GalleryEducation courses

Community

GuidelinesGrandmastersEvents
x_social-icon_white.svglinkedin_social-icon_white.svg
Strategy logoCommunity

© Strategy Inc. All Rights Reserved.

LegalTerms of UsePrivacy Policy
  1. Home
  2. Topics

KB5598: What are the "Connection lifetime" and "Connection Idle Timeout" options under the Database Connection Caching section in MicroStrategy Intelligence Server?


Community Admin

Placeholder •


The following knowledge base article explains the "Connection lifetime" and "Connection Idle Timeout" options available under Database Connection > Advanced tab on a Database configuration object .

As the creation of an ODBC connection is quite expensive, Strategy Intelligence Server uses connection caching to manage multiple users running reports against the warehouse.
 
The following two settings modulate the connection-caching behavior employed by Strategy Intelligence Server. When a user creates a new database connection and clicks on the Advanced tab, the following screen appears:

ka0PW0000002y89YAA_0EM440000002BxU.gif

 
 
Connection lifetime:
This is the amount of time that an ODBC connection will be kept alive. The entire duration of the connection cannot be longer than this limit. A value of '0' indicates that the connection will not be cached and will be immediately deleted after the completion of execution on the database. Even though the lifetime of the connection is 0, a new database connection will be spawned when required and after the completion of the job, the connection will be immediately deleted. A value of '-1' indicates that there is no limit on the lifetime of the connection. Depending on the status of the connection at the time the limit is reached, several things can happen:

  1. If the database connection has a status of Cached (it is idle, but available) when the limit is reached, the connection is deleted.
  2. If the database connection has a status of Busy (it is executing a job) when the limit is reached, the job completes and then the connection is deleted and does not go into a Cached state.

 
However, the connection lifetime setting has to be used carefully. If this setting is too long, the Relational Database Management System (RDBMS) timeout setting for connections (set by database administrator) can delete the connection whether it in in the middle of a a job or not. Ideally the users should set the Connection lifetime to be shorted than the RDBMS limit.
 
Connection Idle Timeout:
This is the amount of time an inactive connection thread remains cached in Intelligence Server until it is terminated. When a database connection finishes a job and there is no job waiting to use it, the connection is cached and a timer starts counting. If the time reaches the Connection idle timeout limit, the database connection thread is deleted. This is used to prevent connections from tying up data warehouse and Intelligence Server resources if they are not needed. A value of '0' indicates that a connection will not be cached i.e. as soon as an active connection becomes idle, that connection will be deleted. A value of '-1' indicates that there is no limit on the time that a connection can remain idle. If the connection lifetime limit is smaller than than the idle timeout limit, the connection will get deleted once the connection lifetime limit is reached.
 
Consider the following case under this scenario; Report A takes two minutes to execute and Report B takes 59 minutes to execute against the database with one hour connection limit (RDBMS limit). The Connection Idle Timeout is set to one minute.
 
Users submit Report A and Report B at 12:00 p.m. Report A creates a connection and runs. At 12:02 Report A finishes and Report B immediately gets put into the same connection due to connection caching. The Connection Idle Timeout has not yet invalidated the cached connection because the connection was idle less than a minute between Report A and Report B. So now, at 1:00 p.m., Report B has been running 58 minutes - it has one more minute to go. But, the RDBMS limit of one hour kills the connection and Report B fails. This failure is due to the implementation of Connection Caching. Without Connection Caching Report B would always run. Connection Lifetime setting can be used to alleviate this problem. Set it to the RDBMS limit minus the time of the longest job.
 
In the example above, the RDBMS limit equals one hour. The time of the longest job equals 59 minutes. Hence Connection Lifetime value is one minute(one hour - 59 minutes). That means that after Report A finishes running, the connection cache would timeout and the connection will be deleted. Report B would then get a brand new connection and will finish execution instead of failing in between.
 
Note: Unlike the RDBMS limit, the Connection Lifetime setting does NOT expire and fail a report in mid run.
 
If the database is configured to have a timeout, then it will be necessary to manipulate the Connection Lifetime as discussed above.


Comment

0 comments

Details

Knowledge Article

Published:

May 26, 2017

Last Updated:

August 12, 2024