How many concurrent users can a large server support? It depends on multiple factors, such as hardware configuration, software architecture, business type and optimization strategy. High-performance servers (such as models equipped with multi-channel CPUs, large memory and high-speed SSDs) can support tens of thousands to millions of concurrent connections, but the number of effective concurrent users in actual business scenarios is often far lower than the theoretical number.
Main factors of large server concurrent capabilities
1. Server hardware
The parallel processing capability of multi-core processors (such as Intel Xeon/AMD EPYC) is the key. For example, a 64-core server can theoretically handle tens of thousands of lightweight concurrent requests (such as HTTP short connections). The single-core performance (IPC) of the CPU also affects the throughput of single-threaded applications.
Each concurrent connection will occupy a certain amount of memory (such as TCP connections require about 4-16KB). If the server is equipped with 512GB of memory, pure TCP connections can support millions of concurrent connections, but in actual business, resources must be reserved for application logic.
10Gbps/25Gbps network cards can support higher throughput. For example, 10Gbps bandwidth can theoretically support about 1 million concurrent connections (assuming each connection has only 10Kbps traffic). High-concurrency databases or file services require NVMe SSDs (such as hundreds of thousands of IOPS per second) to avoid disk bottlenecks.
2. Software architecture
Linux kernel parameter tuning (such as net.ipv4.tcp_max_syn_backlog, ulimit restrictions) directly affects concurrency capabilities. For example, adjusting the TCP buffer can improve long connection performance.
Multi-threading/multi-process: Traditional Apache servers connect to one thread per thread, and concurrency is limited by thread switching overhead (usually thousands of concurrent connections). Nginx, Redis, etc. use event loops (epoll/kqueue), and a single machine can support 100,000+ concurrent connections. For example, Goroutine in the Go language further reduces context switching costs. HTTP/2 multiplexing saves more connections than HTTP/1.1, and WebSocket long connections are more efficient than short connections.
3. Business Types
Lightweight requests (such as static web pages, API calls);
A single server can support 100,000+ concurrent requests (such as Nginx static services);
Computational intensive (such as video transcoding, AI reasoning;
The number of concurrent requests has dropped significantly, and may only be tens to hundreds (depending on the CPU computing power);
MySQL single machine usually supports thousands of concurrent queries (index optimization is required), while Redis can reach 100,000+ QPS.
Business Type | Server Configuration | Theoretical concurrent capabilities | Actual reference value |
---|---|---|---|
Web Static Server | 16-core CPU, 32GB memory, 10Gbps | 500,000+ HTTP connections | 100,000~300,000 active connections |
API Microservices | 32-core CPU, 64GB RAM, Kubernetes | 50,000+ RPS (requests per second) | 10,000~30,000 complex transactions/second |
Game Server (MMO) | 64-core CPU, 128GB memory, 25Gbps | 10,000~50,000 players online | 5000~20000 (including logic processing) |
Live video streaming (CDN edge) | 24-core CPU, 48GB memory, 100Gbps | 100,000+ concurrent streams | 50,000~80,000 (1080p H.264) |
Database (MySQL) | 32-core CPU, 256GB memory, NVMe SSD | 5000+ concurrent queries | 1000~3000(OLTP场景) |
4. Optimization strategies to break through concurrency bottlenecks
Horizontal expansion: Distribute traffic to multiple servers through load balancing (such as LVS, HAProxy) to break through the single-machine limitation.
Connection reuse: Use multiplexing protocols such as HTTP/2 and gRPC to reduce the number of connections.
Asynchronous processing: Convert time-consuming operations (such as IO) to asynchronous tasks (Celery, Kafka queues).
Cache optimization: Redis caches hot data to reduce database pressure.
Kernel tuning: Adjust TCP parameters (such as net.core.somaxconn) and enable zero-copy technology.
There is no unified answer to the concurrency capability of large servers. It needs to be combined with specific scenarios. The optimized Linux server can maintain millions of TCP connections (such as C10M problem solution). In actual business, it is usually thousands to hundreds of thousands (constrained by the complexity of business logic). When the performance of a single machine encounters a bottleneck, the distributed architecture should be given priority rather than continuing to improve the single-machine configuration.