Test Duration: 10m 30s | VUs: 500 constant | Date: Dec 26, 2025
Total Requests: 185,548 | Throughput: 294.5 req/s | Failures: 1.04%
| Metric | Value | Status |
|---|---|---|
| Total Iterations | 6,082 completed | PASS |
| HTTP Requests | 185,548 | PASS |
| Throughput | 294.5 req/s | PASS |
| Avg Response Time | 1.14s | CRITICAL |
| P95 Response Time | 2.26s | CRITICAL |
| Max Response Time | 60s (timeout) | CRITICAL |
| HTTP Failure Rate | 1.04% (1,944 failed) | WARNING |
| Check Success Rate | 79.68% | CRITICAL |
Verdict: CRITICAL - Server cannot sustain 500 VUs. Severe performance degradation.
| Endpoint | Success Rate | Avg Time | P90 Time | P95 Time | Max Time | SLA Status | Volume |
|---|---|---|---|---|---|---|---|
| Authentication | |||||||
| Send OTP | 93% (5,703/6,109) | 3.56s | 4.86s | 5.54s | 60s | CRITICAL | 6,109 |
| Verify OTP (Status) | 96% (5,510/5,703) | 3.56s | 4.86s | 5.54s | 60s | CRITICAL | 5,703 |
| Verify OTP (Token) | 84% (4,826/5,703) | 3.56s | 4.86s | 5.54s | 60s | CRITICAL | 5,703 |
| Metadata & Profile | |||||||
| Get Metadata (Status) | 99% (4,782/4,826) | 1.42s | 1.56s | 1.75s | 60s | WARNING | 4,826 |
| Get Metadata (Time<500ms) | 9% (466/4,826) | 1.42s | 1.56s | 1.75s | 60s | CRITICAL | 4,826 |
| Get Mentor Details | 99% (14,370/14,478) | 1.42s | 1.56s | 1.75s | 60s | WARNING | 14,478 |
| Get Actions | 99% (4,786/4,826) | 1.42s | 1.56s | 1.75s | 60s | WARNING | 4,826 |
| Assessment Cycle | |||||||
| Get Assessment Details | 99% (4,783/4,826) | - | - | - | - | PASS | 4,826 |
| Get School Status | 99% (9,565/9,652) | - | - | - | - | PASS | 9,652 |
| Student Data | |||||||
| Get Students List | 98% (14,327/14,478) | 1.61s | 2.08s | 2.34s | 60s | WARNING | 14,478 |
| Get Student Results (Status) | 98% (57,228/57,912) | 1.61s | 2.08s | 2.34s | 60s | WARNING | 57,912 |
| Get Student Results (Time<1s) | 8% (5,052/57,912) | 1.61s | 2.08s | 2.34s | 60s | CRITICAL | 57,912 |
| Get Performance Insights | 98% (4,759/4,826) | 1.61s | 2.08s | 2.34s | 60s | WARNING | 4,826 |
| Submit Assessment | |||||||
| Submit Assessment (Status) | 98% (4,765/4,826) | 989ms | 1.37s | 1.49s | 34.7s | WARNING | 4,826 |
| Submit Assessment (Time<3s) | 99% (4,821/4,826) | 989ms | 1.37s | 1.49s | 34.7s | PASS | 4,826 |
| Submit Visit Results | 98% (4,766/4,826) | 989ms | 1.37s | 1.49s | 34.7s | WARNING | 4,826 |
| ODK Form Sync | |||||||
| Form Sync (Status) | 100% | 1,276ms | 1,575ms | 1,667ms | 2,595ms | PASS | ~60,000 |
| Form Sync (Time<100ms) | 0% | 1,276ms | 1,575ms | 1,667ms | 2,595ms | CRITICAL | ~60,000 |
| Rank | Issue | Impact | Metric | Recommendation |
|---|---|---|---|---|
| 1 | Student Results - Response Time | CRITICAL | 92% exceeded 1s SLA | Add Redis cache, optimize queries, pagination |
| 2 | Metadata - Response Time | CRITICAL | 91% exceeded 500ms SLA | Cache metadata, add read replicas |
| 3 | Authentication - Failures | CRITICAL | 10% auth failure rate | Fix FusionAuth pooling, add retry logic |
| 4 | Authentication - Timeouts | CRITICAL | Max 60s, avg 3.56s | Investigate DB locks, connection pooling |
| 5 | ODK Sync - Response Time | CRITICAL | 10x slower (1.2s vs 100ms) | Cache manifests, CDN for static files |
| 6 | Database - Timeouts | CRITICAL | 60s max suggests DB lock | Add query timeout, optimize slow queries |
| 7 | HTTP - Send Time | WARNING | Max 37.8s for sending | Check network, request size, connection pool |
| Endpoint Category | Request Count | % of Total | Avg Time | Failure Rate | Priority |
|---|---|---|---|---|---|
| Student Results | 57,912 | 31.2% | 1.61s | 1.2% | HIGH |
| ODK Form Sync | ~60,000 | 32.3% | 1.28s | 0% | MEDIUM |
| Mentor Details (3x per iter) | 14,478 | 7.8% | 1.42s | 0.7% | MEDIUM |
| Students List | 14,478 | 7.8% | 1.61s | 1.0% | MEDIUM |
| School Status (2x per iter) | 9,652 | 5.2% | - | 0.9% | LOW |
| Authentication | 11,812 | 6.4% | 3.56s | 10% | HIGH |
| Submit Assessment | 9,652 | 5.2% | 989ms | 1.3% | LOW |
| Other | 7,564 | 4.1% | - | 1% | LOW |
- Limit production to 200-250 VUs until infrastructure upgraded
- Cache student results - Add Redis with 5-minute TTL
- Fix auth failures - Investigate 10% failure rate
- Add database indexes - Profile and optimize slow queries
- Add read replicas - Offload SELECT queries
- Implement connection pooling - Prevent connection exhaustion
- Cache metadata - 15-minute TTL for rarely changing data
- Add request timeout - Kill queries >5s
- Horizontal scaling - Add 2+ app servers with load balancer
- CDN for ODK assets - Cache form manifests
- Implement pagination - Lazy load student results
- Add APM monitoring - DataDog/NewRelic for bottleneck detection
| VUs | Expected Performance | Infrastructure |
|---|---|---|
| 0-100 | Excellent (<100ms avg) | Current setup OK |
| 100-200 | Good (<300ms avg) | Current setup OK |
| 200-300 | Acceptable (<800ms avg) | Add caching recommended |
| 300-500 | Poor (1-3s avg, timeouts) | Requires infrastructure upgrade |
| 500+ | Failing (timeouts, errors) | Requires major upgrades |
Recommended Production Limit: 250 concurrent users
| Parameter | Value |
|---|---|
| Base URL | https://api.staging.nl.samagra.io |
| ODK URL | https://central-demo.nl.samagra.io |
| Virtual Users | 500 (constant) |
| Duration | 10 minutes 30 seconds |
| Test Users | 8 phone numbers |
| Schools (UDISE) | 3 (9050125526, 9150204103, 9670613001) |
| ODK Forms | 12 validated forms |
| Cycle ID | 13 |
CRITICAL FINDINGS:
- Server cannot sustain 500 concurrent users
- Response times degraded 20-30x compared to baseline
- Database appears to be the primary bottleneck (60s timeouts)
POSITIVE FINDINGS:
- ODK sync achieved 100% success rate
- Submit operations performed well (99% under 3s SLA)
- HTTP failure rate acceptable at 1.04%
Next Steps:
- Run 200 VU test to establish healthy baseline
- Implement caching layer (Redis)
- Optimize database queries causing timeouts
- Retest at 300 VUs after optimizations
Generated: Dec 26, 2025 | Tool: k6 Load Testing