宽带、内存、CPU、硬盘,先从宽带说起,宽带不足后边都白扯。
服务器宽带
服务宽带:1兆=128kb/s
例如:页面加载(静态数据+动态数据)需要128kb,那么QPS最大只能是1;
宽带不足的情况下:网页加载转圈圈。
解决:所有静态数据js、图片、视频等放到第三方管理(七牛云、阿里云),将宽带压力交给第三方同时提供了CDN;
- 动态数据就是接口占用宽带就非常少了。-
- cdn会将数据缓存到全国各地节点中,帮助减少传输过程中的带宽损耗。
部署的时候将html、js、img所有静态资源都交给七牛云管理
流程:客户端直接从七牛云访问html、css、js等所有静态资源,动态数据通过ajax调用服务器端。
![](http://zhangshiyu.com/zb_users/upload/2023/03/20230324122505167963190529406.png)
宽带总结
以上的案例:静态界面在服务器端保存的话,128kb/s,一秒只能一个用户访问;
如果将静态界面交给七牛云管理后,一秒可以处理128个请求,因为动态数据占宽带很少{code:200, msg:抢购成功}也才不到1kb大小。
如果:秒杀接口(以并发最大的接口算),假设预计秒杀最高能达到1万人,至少宽带80兆以上。
宽带计算公式:并发人数 / 128kb = 需要的宽带 1万人 / 128kb = 78兆
0兆宽带大概600块钱
80兆宽带费大概需要6000块钱
服务器内存/CPU
![](http://zhangshiyu.com/zb_users/upload/2023/03/20230324122505167963190545873.png)
服务器内存具体配置多少,必须经历线上压力测试,根据测试报告再进行配置。
正常网站最少也得4核8GB + 集群方式。
蚂蚁课堂为4核8G内存的配置可以达到100并发。
CPU
1核:最多只有两个线程同时执行。
例如:java线程池开了10个线程,1核的配置最多只会创建两个线程同时执行。
结论:最少得4核CPU,这样能开启8个线程同时执行。-- 也可以买更多核数量
内存/CPU结论
首先因为接口逻辑复杂度不同,所以需要经过线上专业的压测,根据测试结果以及预计并发量再做调整(扩大配置或增加集群节点)。
以服务器为4和8g内存为例:
首先一台服务能抗多少并发是和接口业务逻辑有关的,比如某接口业务比较复杂或IO比较多,将会占用资源比较大,QPS可能也就100左右。
如果预计最高并发会为300QPS,那么就开三台相同配置服务器做集群。
![](http://zhangshiyu.com/zb_users/upload/2023/03/20230324122505167963190550539.png)
服务器硬盘
使用硬盘的场景:
1. 写日志; -- 如果只写不删的情况下会导致硬盘占满
2. 作为db数据库;
结论:看系统日志等文件长时间会占用多大空间来决定硬盘大小;机械硬盘IO效率低,SSD固态硬盘IO操作效率高。
服务器配置举例!
要求:秒杀接口达到2000并发;
压测报告结果:秒杀接口压力测试单台服务器4核8G,每秒最多支持500并发;
那么就需要搭建4台秒杀服务器做集群或增大服务器配置后再进行压力测试,最后再根据压测报告对应调整服务器配置。
在网关层进行限流,QPS达到2000时进行服务降级。
刚开始流量不是很大的话可以选择2核4G 5M的服务器,后面不够可以升级配置,不影响项目运行