121 lines
3.6 KiB
Markdown
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!
|
|
|
|
|