CP_AUTOMATION/scripts/LOAD_TEST_ISSUES_FIXED.md
2025-12-12 19:54:54 +05:30

121 lines
3.6 KiB
Markdown

# Load Test Issues - Analysis & Fixes
## 🔍 Issues Identified from Terminal Output
### 1. **CRITICAL: Too Many Concurrent Browsers (500)**
**Error**: `DevToolsActivePort file doesn't exist`
**Root Cause**:
- Script tried to create **500 concurrent Chrome browsers**
- This exceeds system capacity and crashes Chrome/ChromeDriver
- Each browser needs ~200-500MB RAM
- 500 browsers = ~100-250GB RAM needed!
**Fix Applied**:
- ✅ Added `--max-concurrent` safety limit (default: 20)
- ✅ Automatic limiting if requested exceeds max
- ✅ Warning message when limiting occurs
### 2. **Real-Time Metrics Not Showing**
**Issue**: Metrics only printed at end, not during execution
**Root Cause**:
- No periodic metrics printing during execution
- Metrics only printed in final summary
**Fix Applied**:
- ✅ Added `print_real_time_metrics()` function
- ✅ Prints metrics every N students (configurable via `--metrics-interval`)
- ✅ Shows success rate, elapsed time, rate, average duration
### 3. **Driver Setup Failures**
**Error**: `Driver setup failed: Message: session not created: DevToolsActivePort file doesn't exist`
**Root Cause**:
- No retry logic for driver creation
- Resource contention when too many browsers created simultaneously
**Fix Applied**:
- ✅ Added retry logic (3 attempts with 2s delay)
- ✅ Additional Chrome stability options
- ✅ Better error messages
### 4. **No Progress Tracking**
**Issue**: Can't resume if script stops
**Fix Applied**:
- ✅ Use `load_test_e2e_assessment_advanced.py` for progress tracking
- ✅ Basic script now has real-time metrics
## 📋 How to Run Correctly
### ✅ **CORRECT Usage** (Small Load First)
```bash
# Start small to test
python scripts/load_test_e2e_assessment.py --students 10 --csv students.csv --concurrent 5
# Then scale up gradually
python scripts/load_test_e2e_assessment.py --students 50 --csv students.csv --concurrent 10
# For large loads, use advanced script
python scripts/load_test_e2e_assessment_advanced.py --students 100 --csv students.csv --concurrent 10
```
### ❌ **WRONG Usage** (What Caused the Crash)
```bash
# DON'T DO THIS - Will crash system!
python scripts/load_test_e2e_assessment.py --students 500 --csv students.csv --concurrent 500
```
## 🛡️ Safety Features Added
1. **Automatic Concurrent Limiting**:
- Default max: 20 concurrent browsers
- Configurable via `--max-concurrent`
- Warning when limiting occurs
2. **Real-Time Metrics**:
- Prints every N students (default: 10)
- Shows success rate, elapsed time, rate
- Configurable via `--metrics-interval`
3. **Driver Retry Logic**:
- 3 retry attempts
- 2 second delay between retries
- Better error messages
4. **Chrome Stability Options**:
- Additional flags for high concurrency
- Prevents resource exhaustion
## 📊 Recommended Settings
| Students | Concurrent | Max Concurrent | Notes |
|----------|------------|----------------|-------|
| 1-10 | 2-3 | 5 | Testing |
| 10-50 | 5-10 | 20 | Small load |
| 50-100 | 10-15 | 20 | Medium load |
| 100+ | 15-20 | 20 | Large load (use advanced script) |
## 🎯 Key Takeaways
1. **Never use 500 concurrent browsers** - System will crash
2. **Start small** - Test with 5-10 students first
3. **Use advanced script** for large loads (has progress tracking)
4. **Monitor real-time metrics** - Adjust concurrency based on success rate
5. **Use headless mode** for better performance
## ✅ Fixed Issues
- ✅ Safety limit for concurrent browsers
- ✅ Real-time metrics printing
- ✅ Driver setup retry logic
- ✅ Better error handling
- ✅ Progress tracking (in advanced script)
---
**Status**: ✅ **FIXED** - Script now has safety limits and real-time metrics!