Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

Add a brief description of the topic and the page content (2-3 lines).

Pre-requisites

Before you proceed with the configuration, make sure the following pre-requisites are met -

  • Add any system or skills requirements here (Use bullets to build the list)

  •  

Key Functionalities

Add 2-3 lines to highlight the use and applications in context.

  • Add functional aspects for the topic (Use bullets to build the list)

  • Tables can be inserted for certain topics.

...

Title 

...

Description

...

 

...

 

...

 

...

 

Deployment Details

  1. Deployment Steps (Use numbered bullet lists to define the sequence)

Configuration Details

  1. Configuration steps (Use numbered bullet lists to define the sequence)

Integration

 

Integration Scope

 

Integration Benefits

 

Steps to Integration

 

Reference Docs

...

Title 

...

Link

...

 

...

 

...

 

...

 

API List

...

Title 

...

Link

...

 

...

 

...

 

...

Rainmaker has report framework to configure new reports. As part of the report configuration we have to write a native SQL query to get the required data for the report. So if the query takes huge time to execute or query result has huge data, then it will impact on the whole application performance.

Root Cause

The following cases where we can see application performance issue because of heavy reports.

  •  Filtering with long date range data or applying less filters which in turns return huge data

  • Join the multiple tables for getting required data and missing creating index on join columns

  • Implementing conditional logic inside the quires itself

  • Writing multiple sub queries inside a single query for getting required data

Impact

Because of heavy reports, the following things will impact in the platform

  • When we execute complex query on the database, thread from connection pool will block to execute the query

  • When threads from connection pool is blocked completely, application will become very slow for incoming requests

  • When max request timeout is crossed, api gateway will return timeout error, But still connection thread on database is active, Then all these type of idle threads will occupy database resources like memory, CPU which in turns increase the load on database

  • Some times when running huge quires, because of time taken by query will leads to broken pipe issue which causes more memory leaks and out of heap memory type issues. Because of this, service will frequently restarts automatically.

  • If query return the huge data, browser will become unresponsive and application will become unresponsive.