![]() |
Example of an app you can build with the Apex Limit Events Pilot |
I wrote about tracking Apex limits in a blog post last May (That which doesn't limit us makes us stronger). As a force.com developer, you have the ability to instrument your Apex code with System.Limits() methods that allow you to compare how much you're using against the ceiling of what's allowed by any limit.
However, the more instrumentation you add, the more opportunity you have for code and performance issues. It's the Heisenberg concept - that which you try to measure affects the measurement. And even when you do try to track limits in this fashion, the results are stored in developer oriented tools like the Debug Logs or the Force.com Console logs which are really only meant to be used in sandbox. Bu what about DevOps? How can they monitor the health of their developer's code in production?
As a reaction to this, we are introducing the Apex Limit Events pilot program in Summer '15. The goal of this pilot is to enable operations to monitor their production instances in near real-time and with automated hourly roll-up aggregate metrics that tell you the state and health of your Apex according to their limits.
Each event consists of key information about the Apex execution in the context of a limit including:
- EntryPointId
- EntryPointName
- EntryPointType
- EventTime
- ExecutionIdentifier
- Id
- LimitType
- LimitValue
- NamespacePrefix
- UserId
- Username
- Distinct Number of Apex Transactions
- Distinct Number of Apex Transactions With Limits Exceeding 60% Threshold
- Distinct Number of Apex Transactions With Limits Exceeding 60% Threshold By Entry Point Name
- Distinct Number of Apex Transactions With Limits Exceeding 60% Threshold By Limit Type
- Average Limit Value By Entry Point Name
- Average Limit Value By Limit Type
To help developers and operations bootstrap their efforts to take advantage of this feature, I built a Github repo including a:
1. Visualforce page and tab integrating Apex limit events with the Google Charting API
2. LimitsTest Apex class that exposes a REST API webservice you can use to intentionally exceed limits and load data into the apexlimitevents sobject
3. ApexLimitJob Apex class that can be used with scheduled Apex to generate limits
4. limitsHammer python code that makes it easy to generate limits data
To participate in the pilot, contact salesforce support or your account executive. For more information about the pilot, check out the tip sheet.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.