It’s not always possible to have the best in class features and the best practices to be implemented at the very 1st go (being practical)
Since every project has Phased Releases in sync with the Agile Approach of Development lifecycle, the assessment of the system after Go Live at each stage, helps in getting more inputs(from the flaws/performance and demerits perspective) to incorporate the best features in future releases
Based on my experience in some real-time Pega Projects(across domains), just thought of dotting down few Issues and the Resolutions that I came across. Some of these Issues posed as show-stoppers and bottle-necks in the Application.
Here is a list of some common Issues (few of them can even be generalized from a Generic BPM sense)
1) Memory Leak Issue :
- Problem Statement : Every time we try integrating with some external or legacy system from Pega , we need to leverage the “Java Code” within an Activity Rule and also making the dependency APIs available in the Classpath. At times we find the Server getting annoyed with the Developer and goes to a shutdown mode.
- Symptoms :
- The Application/Web Server getting shutdown
- Degraded performance of the Application or Server
- Low response time
- Reasoning: If the objects created with APIs in the custom Java Code, are not recycled, they are never claimed for Garbage Collection and keeps piling up becoming an overhead for the Server.
- Remedy : Recycle Java Code/Follow Java Coding Standards
- Example :
// Create a Session
// Get Database Connection as db
View vw = db.getView(“SomeView”);
Document doc = vw.getFirstDocument();
Document temp = null; //sets the temp for garbage collection immediately
while (doc != null)
// do something with the document here…
temp = vw.getNextDocument(doc); // get the next item
doc.recycle(); // recycle the one we’re done with
doc = temp;
} // end while
2) Low Response Time
- Problem Statement: The Response time of the Application is very very slow.
- Reasoning : The Hard Disk is the weakest part in a system. It cannot pace up with the frequency of updates done by 1000+ concurrent users accessing the system worldwide. More than accessing it is the Logging that’s the pain point. So the setting is important.
- Remedy: Identify n prioritize the Logging levels than flooding the log files with all the log info DEBUG/INFO/WARN/SEVERE.
- Problem Statement : Security and Data Encryption Issue in maintaining Database Passwords
- Reasoning : If the password for the system is hard-coded in the Config File or the Rule is Saved in the File System. It’s tough to trust the Data Admin or the Developer. So the best way is to encrypt and use it. Good Part is Pega provides a Encryption and KeyRing Feature to be made use of at ease
- Remedy : Using JCE-Key Ring Feature, Only using the Key Ring which can be changed by clients at ease.
4) DB Query Optimization and Max-Records
- Problem Statement : Reports/DropDown/List getting the records from the DB used to slow down the performance and the system gets hanged.
- Remedy : The Queries were tweaked for better performance, similar to pagination the max record needs to be set so that it does not flood all the data info fetching from the DB
5) Purging and Archiving Data
- Problem Statement : More Data –> Increase Memory Size –> Performance Issue -> response Time
- Remedy : Timely Archival and purging Agent/Job Configuration to run at backend.
6) Commit Issue
- Problem Statement : Performance of the system is hampered, some strange and weird issue while running a Process Flow
- Reasoning : Very Short and simple issue, was tough to believe. Since the Commit Statement asks for checking a box “WRITE-NOW” which actually forces the Data to be written instantly. As we are calling one more Agent Activity to Write the Content Instantly in the DB
- Remedy : Using Commit Statement as and when it is necessary and a mandate
Happy Learning!! 🙂