It's all about the answers!

Ask a question

"Acceptable" Database Performance

Michael Kostek (212) | asked Sep 27 '16, 9:44 a.m.

We have questions on database performance and how to interpret the results; what they are doing, what results are "acceptable" and what we have the capability to control. With regards to the performance health check widget, specifically the database piece) we have been able to see that there are spikes in the millisecond values coming back. These results, though, could hit the "unacceptable" value of 2ms + once out of 10 consecutive clicks. We were told 2ms+ in this test is not good.  Is this reason for any concern? What is the database test actually doing?  Is it a simple sql statement?  Other?

There are other performance measurements in DOORS NG that lead us to believe all is well with database. The “Diagnostics” monitoring has the following results: “The database performance measurement took 172 ms, which is within acceptable limits."  

In that test 172ms is acceptable. Why? What is it measuring and why is it that much different from the performance widget testing which I should note has a disclaimer ( Disclaimer: The 'Performance Health Check' widget is provided for informational purposes only. Licensee should not rely on this feature for any purpose, and is encouraged to continue to rely on any existing tests of Licensee's system that may be in place.) 

Glenn Bardwell commented Oct 05 '16, 3:13 p.m.

Let me know what you did the to see the RDNG diagnostics. I'll find that code also. 

Michael Kostek commented Oct 13 '16, 10:11 a.m.

 Glenn, thanks for the replies!  The diagnostics is at the JTS level (same level we run the database monitoring from).  As a JTS admin we have access to the "Diagnostics" section.To get there I see 4 column headers, one being "Status".  Under there is "Diagnostics".  I click on that and see a series of scheduled diagnostics being run.  One is "Database" and "Database Performance Statistics".  Please let me know if you have questions on this.  Thanks again!

One answer

permanent link
Glenn Bardwell (58621527) | answered Oct 05 '16, 3:12 p.m.
The database performance health check is running the code below. 

The measured call is dbProvider.performKeepAliveOperation(c), an operation that does gets to the database, and runs a "select 1 from sysibm.sysdummy1", or something similar depending on the database. That's what dbProvider.performKeepAliveOperation(c) does. 

public int getDatabasePingTime() throws TeamRepositoryException {
IConnectionPool pool = getConnectionPoolService().getConnectionPool();
IDbProvider dbProvider = getConnectionPoolService().getProvider();
Connection c = pool.getConnection();
long before = System.currentTimeMillis();
try {
} catch (SQLException e) {
throw TeamRepositoryExceptionHelper.wrapException(e);
} finally {
long after = System.currentTimeMillis();
return (int) (after - before);

Your answer

Register or to post your answer.

Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.