Skip to main content

Performance Targets

LiteLLM benchmarks (1000 RPS):
  • P50 latency: 2ms (proxy overhead)
  • P95 latency: 8ms (proxy overhead)
  • P99 latency: 15ms (proxy overhead)
  • Throughput: 10,000+ RPS per instance
Total latency = LiteLLM overhead + Provider API latency. Provider latency dominates (500ms-5s).

Caching Strategy

Redis Caching

Cache identical requests to reduce provider API calls:
config.yaml
Benefits:
  • Cost savings: Eliminate redundant API calls
  • Latency reduction: Redis response < 5ms vs provider 1-5s
  • Rate limit protection: Reduce pressure on provider limits

Semantic Caching

Cache similar (not just identical) requests:
config.yaml
Example:

Cache Control Headers

Redis Optimization

docker-compose.yml

Connection Pooling

HTTP Connection Reuse

LiteLLM reuses HTTP connections to providers:
config.yaml

Database Connection Pooling

Use PgBouncer to pool database connections:
pgbouncer.ini
Deploy:
docker-compose.yml

Async Request Processing

Worker Configuration

Or in Docker:
Worker sizing:

Async Database Operations

LiteLLM uses async Prisma client for non-blocking DB operations:
config.yaml

Request Batching

Batch API Requests

For non-real-time workloads, use batch APIs:

Streaming Responses

Reduce time-to-first-token:

Load Balancing

Provider Load Balancing

Distribute load across multiple deployments:
config.yaml
Routing strategies:

Geographic Distribution

Deploy close to users:

Resource Optimization

Container Resources

Kubernetes resource limits:
deployment.yaml
Sizing guidelines:

Memory Optimization

config.yaml
Monitor memory:

Database Optimization

Query Optimization

LiteLLM maintains aggregated tables for fast queries:

Index Optimization

Prisma creates indexes automatically, but add custom indexes for hot queries:

Partitioning

For high-volume deployments, partition large tables:

Archive Old Data

Monitoring Performance

Key Metrics

Grafana Dashboard

Performance overview panel:

Load Testing

K6 Load Test

load-test.js
Run:

Locust Load Test

locustfile.py
Run:

Performance Tuning Checklist

1

Enable Caching

  • Redis caching enabled
  • Semantic caching for similar requests
  • Cache TTL optimized
  • Cache hit rate > 30%
2

Connection Pooling

  • PgBouncer for database
  • HTTP connection reuse enabled
  • Pool sizes optimized
3

Load Balancing

  • Multiple provider deployments
  • Latency-based routing
  • Geographic distribution
  • Automatic failover
4

Resource Optimization

  • Right-sized container resources
  • Autoscaling configured
  • Memory limits set
  • Worker count optimized
5

Database Performance

  • Indexes on hot queries
  • Query optimization
  • Old data archived
  • Connection pooling
6

Monitoring

  • Latency tracking
  • Error rate monitoring
  • Resource usage dashboards
  • Load testing regularly

Best Practices

  1. Cache aggressively - 30-50% cache hit rate saves significant costs
  2. Use streaming - Reduces perceived latency for long responses
  3. Deploy globally - Route users to nearest region
  4. Monitor everything - Track latency, errors, cache hits, resource usage
  5. Load test regularly - Find bottlenecks before users do
  6. Right-size resources - Start small, scale based on metrics
  7. Archive old data - Keep database lean and fast
  8. Use batching - For non-real-time workloads

Next Steps

Monitoring

Track performance metrics

High Availability

Scale for production traffic

Troubleshooting

Debug performance issues

Security

Optimize without compromising security