如何计算网站可支持的访问并发上限?
网站并发上限估算与极限测试方法
一、基于硬件信息的并发访问估算
1. CPU维度
- 用
lscpu命令查看CPU物理核心数,单核心支撑的并发数取决于应用类型:PHP-FPM单核心约20-50并发,Java服务单核心可达100+并发。 - 理论上限=核心数×单核心并发数×(0.7-0.8)(预留20%-30%资源给系统进程)。
- 可通过当前CPU负载反推:比如8核CPU负载稳定在7时,记录此时的并发数,再乘以(8/7)得到满负载近似并发值。
2. 内存维度
- 用
top或ps aux统计单个请求的平均内存占用:PHP请求通常2-20MB,Java线程约5-15MB。 - 用
free -m查看系统available内存(总内存减去常驻进程占用),预留10%-15%内存防止OOM。 - 理论并发上限=可用内存÷单请求内存占用。
3. 网络带宽维度
- 统计单请求平均流量大小(含页面、静态资源、接口响应),比如单请求平均1MB。
- 转换带宽单位:100Mbps带宽=12.5MB/s(1Mbps=0.125MB/s)。
- 先算理论QPS=总带宽÷单请求大小,再通过并发数=QPS×平均响应时间换算并发上限(比如QPS=12,响应时间0.5s,并发数=6)。
二、极限并发测试实操建议
估算仅为理论值,实际极限需通过压测验证:
- 工具选择:
- 轻量场景用Apache Bench:
ab -n 10000 -c 200 http://your-site.com(-n总请求数,-c并发数) - 复杂场景用JMeter、wrk,支持多接口、自定义请求参数压测
- 轻量场景用Apache Bench:
- 测试流程:
- 从日常并发的1.5倍开始,逐步提升并发数,每次提升后稳定运行2-5分钟
- 实时监控指标:CPU使用率、内存占用、带宽使用率、应用响应时间、错误率(5xx/4xx占比)
- 出现以下任一情况时,当前并发数即为极限值:
- 错误率突然超过5%
- 响应时间飙升至业务不可接受阈值(如>2s)
- CPU/内存/带宽任一资源持续满载(>90%)超1分钟
- 注意事项:
- 测试环境需与生产环境完全一致(硬件、软件版本、数据量、缓存状态)
- 优先排查非Web服务器瓶颈:数据库连接池耗尽、缓存命中率过低、CDN限流等往往是实际极限的核心卡点
- 多次测试取平均值,避免单次波动影响结果
内容的提问来源于stack exchange,提问作者Antônio Neto
相关产品推荐
相关产品推荐

