When legacy systems are initially created and coded, the final system performance and maintainability depend entirely on the developer's expertise.
When you inherit a system with the following issues, this article might help you:
- No monitoring
- No alerting
- No business success rate metrics
- Frequent optimistic locking failures
- Black box system response time (yes, your business users only vaguely tell you the system is slow, but don't know specifically where it's slow)
- Complex log troubleshooting
Yes, these are the headache-inducing problems I've encountered over the past month.
Now that the month is up, I'm starting to take action and perform a series of performance optimizations on this system.
First, you need to understand the overall situation of the system. For optimization, you should at least know what you're optimizing. Business users should also know where exactly their system is slow.
So what you need to do is establish system baselines.
Establishing System Baselines
System baselines are quantitative descriptions of key performance indicators when the system is running normally.
They are the starting point for system performance optimization and the standard reference for measuring optimization effectiveness. Simply put, system baselines are your system's "health checkup report," recording system performance under various conditions. (1, 2)
System Baselines Include the Following
A complete system baseline should include the following aspects:
Performance Metrics
- Response time (average, P95, P99)
- Throughput (QPS/TPS)
- Latency
- Concurrent processing capability
Resource Usage
- CPU utilization
- Memory usage and allocation
- Disk I/O
- Network I/O
- Connection pool usage status
Business Metrics
- Business success rate
- Error rate
- Key business process completion time
System Stability Metrics
- Mean Time Between Failures (MTBF)
- Mean Time To Recovery (MTTR)
- Lock contention situations (such as the optimistic lock failure rate you mentioned)
Comments