当前位置: 首页 > news >正文

服务器配置推荐,如何选择服务器配置

宽带、内存、CPU、硬盘,先从宽带说起,宽带不足后边都白扯。

服务器宽带

服务宽带:1兆=128kb/s

例如:页面加载(静态数据+动态数据)需要128kb,那么QPS最大只能是1;

宽带不足的情况下:网页加载转圈圈。

解决:所有静态数据js、图片、视频等放到第三方管理(七牛云、阿里云),将宽带压力交给第三方同时提供了CDN;

- 动态数据就是接口占用宽带就非常少了。-

- cdn会将数据缓存到全国各地节点中,帮助减少传输过程中的带宽损耗。

部署的时候将html、js、img所有静态资源都交给七牛云管理

流程:客户端直接从七牛云访问html、css、js等所有静态资源,动态数据通过ajax调用服务器端。

宽带总结

以上的案例:静态界面在服务器端保存的话,128kb/s,一秒只能一个用户访问;

如果将静态界面交给七牛云管理后,一秒可以处理128个请求,因为动态数据占宽带很少{code:200, msg:抢购成功}也才不到1kb大小。

如果:秒杀接口(以并发最大的接口算),假设预计秒杀最高能达到1万人,至少宽带80兆以上。

宽带计算公式:并发人数 / 128kb = 需要的宽带 1万人 / 128kb = 78兆

0兆宽带大概600块钱

80兆宽带费大概需要6000块钱

服务器内存/CPU

服务器内存具体配置多少,必须经历线上压力测试,根据测试报告再进行配置。

正常网站最少也得4核8GB + 集群方式。

蚂蚁课堂为4核8G内存的配置可以达到100并发。

CPU

1核:最多只有两个线程同时执行。

例如:java线程池开了10个线程,1核的配置最多只会创建两个线程同时执行。

结论:最少得4核CPU,这样能开启8个线程同时执行。-- 也可以买更多核数量

内存/CPU结论

首先因为接口逻辑复杂度不同,所以需要经过线上专业的压测,根据测试结果以及预计并发量再做调整(扩大配置或增加集群节点)。

以服务器为4和8g内存为例:

首先一台服务能抗多少并发是和接口业务逻辑有关的,比如某接口业务比较复杂或IO比较多,将会占用资源比较大,QPS可能也就100左右。

如果预计最高并发会为300QPS,那么就开三台相同配置服务器做集群。

服务器硬盘

使用硬盘的场景:

1. 写日志; -- 如果只写不删的情况下会导致硬盘占满

2. 作为db数据库;

结论:看系统日志等文件长时间会占用多大空间来决定硬盘大小;机械硬盘IO效率低,SSD固态硬盘IO操作效率高。

服务器配置举例!

要求:秒杀接口达到2000并发;

压测报告结果:秒杀接口压力测试单台服务器4核8G,每秒最多支持500并发;

那么就需要搭建4台秒杀服务器做集群或增大服务器配置后再进行压力测试,最后再根据压测报告对应调整服务器配置。

在网关层进行限流,QPS达到2000时进行服务降级。

刚开始流量不是很大的话可以选择2核4G 5M的服务器,后面不够可以升级配置,不影响项目运行

相关文章:

  • 【Bezier + BSpline + CatmullRom】移动机器人曲线路径规划
  • 数字图像处理 基于OpenCV的一种简单的阴影校正的方法
  • mysql数据库常问面试题
  • 2023年Android现代开发
  • 人工智能大模型之ChatGPT原理解析
  • ChatGPT-4.0 : 未来已来,你来不来
  • EEPROM芯片(24c02)使用详解(I2C通信时序分析、操作源码分析、原理图分析)
  • 智能生活垃圾检测与分类系统(UI界面+YOLOv5+训练数据集)
  • 字节跳动软件测试岗,前两面过了,第三面HR天坑!竟然跟我说……
  • Jetson Nano驱动机器人的左右两路电机
  • 西瓜视频登录页面
  • 【文心一言】什么是文心一言,如何获得内测和使用方法。
  • 详解分库分表设计
  • 微信小程序项目实例——扫雷
  • 一个完整的渗透学习路线是怎样的?如何成为安全渗透工程师?
  • [case10]使用RSQL实现端到端的动态查询
  • 《剑指offer》分解让复杂问题更简单
  • 08.Android之View事件问题
  • CentOS7简单部署NFS
  • ES6--对象的扩展
  • Java多线程(4):使用线程池执行定时任务
  • MySQL-事务管理(基础)
  • webpack4 一点通
  • 给第三方使用接口的 URL 签名实现
  • 十年未变!安全,谁之责?(下)
  • 使用Swoole加速Laravel(正式环境中)
  • 微服务入门【系列视频课程】
  • 赢得Docker挑战最佳实践
  • 在Unity中实现一个简单的消息管理器
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #pragma pack(1)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (2015)JS ES6 必知的十个 特性
  • (42)STM32——LCD显示屏实验笔记
  • (C语言)逆序输出字符串
  • (LeetCode C++)盛最多水的容器
  • (Python) SOAP Web Service (HTTP POST)
  • (十八)SpringBoot之发送QQ邮件
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net 调用php,php 调用.net com组件 --
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net中生成excel后调整宽度
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [] 与 [[]], -gt 与 > 的比较
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [BT]BUUCTF刷题第4天(3.22)
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [CISCN2019 华东南赛区]Web11
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具
  • [echarts] y轴不显示0
  • [GYCTF2020]Ez_Express