"It is health that's real wealth and not items of gold and silver", is something that very aptly applies to Salesforce.com orgs as well. You do not need a Salesforce.com org plagued with problem like CPU timeouts, Query timeouts and Row Lock errors. And the good part is that you simply yourself can be the doctor of your org.
The things can be as simple as checking the storage stats of the objects in your org or analysing the way your batches are scheduled and the time they take for execution. The next step after the analysis is complete is to provide remediation to the caused issues. And that is not too hard either. The main aim is to make small but necessary changes to the configuration of your system, while keeping the behavior intact and without compromising the performance.
We did one session in ApexHours with Saket Joshi on sale topic.
In that session we covered the frequency of performing these health-checks on your org to ensure scalability of the system. Once the issues are fixed, it is expected to have improved system performance and less issues caused because of either concurrency or data fragmentation.
Some Key Point :-
Your Salesforce org is unwell? |
Identifying the wellness of your org
- Performance Issues
- Data Storage Limitations
- Scalability and Planning
- Record Locking & Contention
Symptoms of an Unhealthy Salesforce Org |
Symptoms of an Unhealthy Salesforce Org
- Storage Limits Exceeded
- Frequent Issues
- Record Locking & Contention
- Unnecessarily Installed Packages
- Concurrent and Ever-Running Batch Classes
Diagnosis |
Diagnosis
- Generate a report of issues found
- Prioritizing the issues
- Organizing the issues by complexity
- Solutioning a quick-fix to the issues
Tools for Diagnosis |
Some Common Tools for Diagnosis
- Salesforce Health Checker ( URL)
- ApexPMD Tool ( URL )
- Checkmarx Apex Code Scanner ( URL )
- Salesforce Accelerators (URL)
- Manual Org Assessment
Remediation |
Remediation
1) Analyse and fix the record skew
- Decentralization of records
2) Data Archival & Cleanup
- Deletion of unnecessary data
- Using third-party APIs (Amazon Cloud)
3) Fix the row lock issues
- Avoid parallel processing
- Using SOQL locks
4) Avoid the CPU Timeouts and/or Query Timeouts
- Field Indexing
- Using Async Apex for long running operations
- Optimizing the query/report filters
- Database refactorization
5) Uninstalling unwanted packages
6) Rescheduling the batches & schedulers
- Analyse batch duration & change batch chunk size
- Simultaneous running of non-related batches
- Deciding the frequency
Here is recording of session.
Thanks,
Amit Chaudhary
amit.salesforce21@gmail.com
@amit_sfdc @ApexHours
Salesforce Apex Hours
#SalesforceApexHours