-
Notifications
You must be signed in to change notification settings - Fork 614
Add AUDIT_TRAIL_ENABLED flag to disable audit trail logging for performance #1743
Copy link
Copy link
Closed
Copy link
Labels
auditCompliance and auditingCompliance and auditingperformancePerformance related itemsPerformance related items
Milestone
Description
Problem
During load testing with 2000 concurrent users, the audit_trails table accumulated 995,412 rows (788 MB) in 7 hours, causing:
- PostgreSQL memory exhaustion (99.77% of 4GB limit)
- RPS drop
- Heavy checkpoint I/O (9000+ buffers every 5 minutes)
The AuditTrailService logs every CRUD operation (including reads) unconditionally with no way to disable it.
Solution
Add AUDIT_TRAIL_ENABLED environment variable (default: false) to control audit trail logging.
Files to modify:
-
mcpgateway/config.py- Addaudit_trail_enabledsetting -
mcpgateway/services/audit_trail_service.py- Check setting inlog_action() -
.env.example- Document the setting -
docker-compose.yml- Add setting -
docker-compose-performance.yml- Add setting -
charts/mcp-stack/values.yaml- Add to Helm chart -
docs/docs/manage/configuration.md- Document -
docs/docs/manage/logging.md- Document
Usage
# Disabled for load testing / development (default)
AUDIT_TRAIL_ENABLED=false
# Enabled for production compliance (SOC2, HIPAA, GDPR)
AUDIT_TRAIL_ENABLED=truePerformance Impact
| Scenario | audit_trails rows/hour | DB writes/request |
|---|---|---|
| Disabled (default) | 0 | 0 |
| Enabled | ~140,000+ | 1 |
Related
- Audit trail is separate from
SECURITY_LOGGING_ENABLED(which controlssecurity_eventstable) - Audit trail logs:
view_server,view_prompt,create_*,update_*,delete_*actions
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
auditCompliance and auditingCompliance and auditingperformancePerformance related itemsPerformance related items