APISIX Performance Tuning Guide

Introduction

Optimizing APISIX performance is crucial for handling high-traffic APIs efficiently. This guide covers essential tuning parameters, caching strategies, and monitoring techniques.

Prerequisites:
  • APISIX version 2.0 or higher
  • Basic understanding of NGINX configuration
  • Access to system resources monitoring

System-Level Optimization

Operating System Tuning

Optimize your system settings for better performance:

# /etc/sysctl.conf
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_fastopen = 3
fs.file-max = 1000000

Worker Process Configuration

NGINX Worker Settings

# config.yaml
nginx_config:
  worker_processes: auto
  worker_connections: 10240
  worker_rlimit_nofile: 20480
2x-3x

Potential performance improvement with optimized worker settings

Caching Strategies

Response Caching

{
    "plugins": {
        "proxy-cache": {
            "cache_zone": "disk_cache_one",
            "cache_key": ["$host", "$request_uri"],
            "cache_bypass": ["$arg_bypass"],
            "cache_method": ["GET", "HEAD"],
            "cache_http_status": [200],
            "hide_cache_headers": true,
            "no_cache": ["$arg_no_cache"]
        }
    }
}

Connection Pooling

Upstream Connection Pool

{
    "upstream": {
        "nodes": {
            "127.0.0.1:80": 1
        },
        "type": "roundrobin",
        "keepalive_pool": {
            "size": 320,
            "idle_timeout": 60,
            "requests": 1000
        }
    }
}

Plugin Optimization

Plugin Configuration

  • Enable only necessary plugins
  • Optimize plugin execution order
  • Use lightweight authentication methods
  • Implement efficient rate limiting
{
    "plugins": {
        "limit-count": {
            "count": 2000,
            "time_window": 60,
            "rejected_code": 503,
            "key": "remote_addr"
        }
    }
}

Performance Monitoring

Metrics Collection

{
    "plugins": {
        "prometheus": {
            "prefer_name": true
        }
    }
}

Key metrics to monitor:

  • Request latency
  • Error rates
  • CPU and memory usage
  • Network I/O
  • Cache hit rates

Performance Troubleshooting

Common Issues and Solutions

Issue Possible Cause Solution
High Latency Insufficient worker processes Adjust worker_processes setting
Memory Leaks Plugin memory management Update plugins, adjust cache settings
CPU Spikes Inefficient route matching Optimize route configurations

Read Next

Traffic Splitting

Learn about traffic management strategies

Read More

Security

Secure your APISIX deployment

Read More