Skip to content

Add AUDIT_TRAIL_ENABLED flag to disable audit trail logging for performance #1743

@crivetimihai

Description

@crivetimihai

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 - Add audit_trail_enabled setting
  • mcpgateway/services/audit_trail_service.py - Check setting in log_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=true

Performance 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 controls security_events table)
  • Audit trail logs: view_server, view_prompt, create_*, update_*, delete_* actions

Metadata

Metadata

Assignees

Labels

auditCompliance and auditingperformancePerformance related items

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions