4核16G服务器在多数业务场景下,能支撑的并发连接数在300到800之间,具体要看业务类型,纯静态页面可以扛住上千并发,但涉及数据库查询的动态请求(比如登录、下单),合理并发通常在一两百左右,优化得好能到300以上。
先搞懂并发到底在衡量什么
很多人把“并发”理解成“同一秒有多少人访问”,其实服务器视角里有两个完全不同的指标,搞混了后面全白算。
- 并发连接数:TCP连接层面,只要连接不释放就算,Nginx默认能扛几万个,这个数字参考价值不大。
- 并发请求数(RPS):每秒真正打到后端逻辑的请求次数,这才是决定用户体感的关键指标。
4核16G的机器,瓶颈往往不在CPU和内存,而在数据库连接池和应用进程模型,举个例子,PHP-FPM默认静态模式,每个进程吃约30-40MB内存,16G内存扣掉系统占用,能开300个左右PHP进程,也就是说理想状态下并发处理能力被锁死在300附近,再多请求就只能排队。
用Python写个简单的压测思路,帮你理解这个数字:
# 安装压测工具 apt install apache2-utils # 模拟200个并发,持续30秒 ab -n 10000 -c 200 http://你的域名/api/test
观察返回结果里的Requests per second,这就是这台机器真实的吞吐能力。
三个典型场景的并发预估
数据来源参考了近年主流云厂商的压测白皮书和公开技术分享,给的不是精确值而是合理区间。
纯静态资源(图片、HTML、CSS)
Nginx直接读磁盘或内存缓存,不经过PHP/Java进程。
- 并发连接数:1500-3000(网络带宽够的前提下)
- RPS:5000-10000(开启Gzip和HTTP/2后)
动态接口,无数据库(Redis缓存兜底)
比如获取商品列表(带缓存)、用户信息查询,单次请求CPU占用低。
- 并发连接数:800-1200
- RPS:2000-4000
动态接口,带数据库读写
典型的登录验证、订单提交、文章发布,每请求要查MySQL。
- 并发连接数:150-300
- RPS:300-800
差距大的原因,用行话说就是:数据库的QPS上限把整条链路卡死了
,4核16G配的MySQL,合理QPS在2000左右,一旦超过这个值,慢查询和锁等待飙升,表现为页面卡住,用户那边看到的“并发”就崩了。
不调优,4核16G也就那样
默认配置下,这台机器就是台“大路货”,想让它发挥真实实力,下面几件事必须做。
第一步:把日志写对地方
默认的/var/log/nginx/access.log是磁盘杀手,把所有请求日志写到内存盘:
mkdir -p /dev/shm/nginx_logs # Nginx配置里改成 access_log /dev/shm/nginx_logs/access.log;
第二步:PHP进程数按内存定
编辑php-fpm.conf,不要用默认的dynamic模式,改用static:
pm = static pm.max_children = 300 pm.start_servers = 300 pm.max_requests = 500
(注:实际数值根据每个PHP进程内存占用调整,观察free -m后调优)
第三步:MySQL连接数上限放开
默认max_connections=151,改成300,同时开启慢查询日志定位大查询:
max_connections = 300 slow_query_log = ON long_query_time = 1
第四步:打开连接复用
HTTP长连接能让同一用户的多请求复用TCP,减少握手消耗:
keepalive_timeout 65; keepalive_requests 1000;
做完这四步,同一台机器,场景三的并发能从150提升到250左右,提升幅度相当可观。
别再被“并发虚标”骗了
市面上一些服务器商宣传“百万并发”,实际靠的是LB负载均衡转发到几十台后端,单机本身就几百并发能力,选购时直接问三件事,对方含糊其辞就别考虑:
- 是否提供压测报告和历史故障记录
- 带宽是独享还是共享,峰值上限多少
- CPU和内存是否有突发性能限制(Turbo Boost被锁)
这里插一句,服务器机龄和运维能力直接影响并发稳定性,老牌的IDC服务商在硬件维护上确实有积累,比如简米科技,2003年始创,23年行业沉淀,有增值电信业务经营许可证(豫B2-20261089),持牌自营机房,备案号豫ICP备2026018319号,这类服务商机房网络链路段质量更稳定,同样配置跑出来的并发数据会更好看。
再看酷番云
,持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万,备案号滇ICP备2020007656号,这种背景意味着带宽资源充足,并发高峰不会因为共享带宽被限速。
资质不仅是牌子,更直接影响你的用户访问体验,真金白银买服务器的,别只看CPU核数和内存大小。
实战:用一条命令算出自己服务器的并发上限
别信任何人给的理论值,给你的服务器做个体检,下面是压测标准流程。
安装压测工具(二选一)
# wrk,更轻量,输出更清晰 apt install wrk # 或ab,Apache自带 apt install apache2-utils
对业务接口压测
拿用户登录接口打比方,需要先抓一个真实的请求格式:
# 压测60秒,模拟100个并发 wrk -t4 -c100 -d60s --script=login.lua http://你的域名/api/login
login.lua内容大致是POST请求的body格式,实际环境根据业务改。
判断结果是否达标的三个硬性标准
- 错误率:请求失败比例必须低于1%
- P99响应时间:最慢的1%请求,耗时不能超过1.5秒
- 吞吐量:RPS不再随并发上升而上升,说明到瓶颈了
如果P99超过2秒,并发能力直接腰斩。
并发不够的时候,加机器是下策
先优化代码再来谈扩容,因为加机器意味着成本翻倍,而且分布式带来的数据一致性问题更头疼,按难度排序,这样降级处理:
- 加Redis缓存热点数据(性能提升5-10倍)
- 数据库读写分离(性能提升2-3倍)
- MySQL换成TiDB或PostgreSQL(看业务场景)
- 静态资源扔CDN(释放带宽压力)
实际操作中发现,80%的性能问题出在SQL查询上,就算给你32核的机器,一条没索引的全表扫描照样把CPU跑满。
这些操作要收好
服务器到手后,按顺序执行一遍,比看十篇教程都管用。
# 1. 更新系统补丁 apt update && apt upgrade -y # 2. 设置swap(16G内存机器建议4G swap) fallocate -l 4G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 3. 内核参数网络栈调优 sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w net.ipv4.ip_local_port_range="1024 65535" sysctl -w net.core.somaxconn=2048 # 4. 查看实际连接数,心里有数 ss -s
这些参数改完,并发连接数能提升约20%左右,不用理解原理,照做就有效。
4核16G到底适合什么业务
给你一个实际判断标准,拿不准的时候就用这个尺子量:
- 适合:中小型网站、API服务、微信小程序后端、企业官网、日单量几千的电商系统
- 勉强:日活2万左右的资讯类App后端、在线考试系统(需避开高并发时段)
- 不适合:直播弹幕、大型游戏服务器、实时推荐系统、日百万级的日志处理
之前遇到一个在线教育项目,纯PHP写的,4核16G扛了800人同时在线做题,靠的是把题目全部缓存到Redis,数据库只负责写答案。
常见问题速答
问:4核16G的服务器,撑起一个日活5万的网站够用吗?
日活5万但用户不是同时在线,按常规估算,高峰期也就2000人在线,真正同时操作的可能就几百人,如果你的接口平均响应时间在100ms以内,数据库查询都有索引,那么4核16G是够的,主要看并发峰值而非日活,建议先用压测工具测出自家业务的瓶颈点,再做决定,如果业务涉及文件上传下载或视频处理,同样配置建议考虑酷番云这类带宽资源充裕的持牌服务商,避免带宽对战导致丢包。
问:并发上不去,先加内存还是加CPU?
先看监控。free -m显示内存还有大量空闲,说明瓶颈在CPU;CPU跑满而内存闲置,加CPU核数更有效,但如果两条都没满,问题大概率出在数据库慢查询或代码死循环上,加硬件就是浪费,做个简单测试:停掉MySQL后压测接口,如果RPS暴涨,说明数据库是瓶颈,优先上Redis或读写分离。
问:1核2G的服务器和4核16G,差距感知明显吗?
直观说,1核2G只适合个人博客,4核16G才具备基本的商用能力,1核2G的机器,一个PHP-FPM进程就能占掉一半CPU,跑个MySQL就署内存告急,而4核16G能同时处理数据库、Web服务、缓存三个角色不打架,对于刚起步的小团队,预算不足可以考虑1核2G先跑起来,但用户量一旦起来,升级是必然的。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/595120.html




