java容量规划

PV, UV, IP是什么意思?[面试4.0]

PV: Page View(访问量,页面浏览量或点击量)可累计
UV: Unique Visitor(独立访客量,1天内访问某站点的用户数)同一个用户访问不可累计
IP: Internet Protocol(独立IP数,1天内多少个独立的IP浏览了页面)同一个IP访问不可累计
Throughput: 吞吐量(单位时间内通过网卡的总数据量,如:每秒完成的请求数)
并发量: 也称为并发连接数,一般是指单台服务器每秒处理的连接数
并发用户数: 同时执行操作的用户数
QPS: Queries Per Second每秒处理的查询数(若为数据库,相当于读取)
TPS: Transactions Per Second每秒处理的事务数(若为数据库,相当于写入,修改)
IOPS: 每秒磁盘进行的I/O操作次数

谈谈你们项目的访问情况?[面试5.0]

PV: 100w+,单页大小: 1M(注:1MB/s=8Mbps),注:天的秒数为:24 * 60 * 60 = 86400
带宽(M/s) = (PV / 每天秒数) * 单页大小(0.5M)
带宽(M/s) = 1000000 / 86400 * 0.5M = 6M/s

带宽(Mbps) = (PV / 每天秒数) * 单页大小(M) * 8
带宽(Mbps) = 1000000 / 86400 * 0.5M * 8 = 48Mbps

QPS = (PV * 80%) / (每天秒数 * 20%) 注: (http_load统计)
QPS = 1000000 * 0.8 / 86400 * 0.2 = 46个请求/s

QPS高峰 = 46 * 3 = 138个请求/s

机器数 = 峰值QPS / 单节点QPS
机器数 = 138 / 46 = 3台

每个接口请求的QPS怎么统计?[面试5.0]

1.在接口里面写日志关键字,然后根据日志查出每秒关键字出现次数就是QPS了
2.tomcat的access log也可以统计
a.利用命令cat xx.log |grep ‘GET 接口相对路径’|cut -d ’ ’ -f4|uniq -c|sort -n -r可以统计查看QPS的最大数值
b.利用命令tail -f host-access.log | grep ‘接口相对路径’ | awk -F ‘|’ ‘{print substr($1,1,19)}’ | uniq -c也可以统计
若为tomcat集群(集群有3台机器),那么若负载均衡采用的是默认的轮询方式,则集群的QPS = 单机QPS * 机器数

架构中的容量规划分哪四步?[面试3.0]

1.业务流量预估阶段: 通过历史数据分析未来某一个时间点业务的访问量会有多大;
2.系统容量评估阶段: 初步计算每一个系统需要分配多少机器;
3.容量的精调阶段: 通过全链路压测来模拟大促时刻的用户行为, 在验证站点能力的同时对整个站点的容量水位进行精细调整;
4.流量控制阶段: 对系统配置限流阈值等系统保护措施,防止实际的业务流量超过预估业务流量的情况下,系统无法提供正常服务;

架构中的容量预估怎么预估?[面试3.0]

需要预估的内容大致为:数据量, 并发量, 带宽, CPU/MEM/DISK
以并发访问量为例来说明(其他如数据量,宽带,CPU等亦可类似根据以下步骤来确定):
1.评估总访问量->询问业务方如做一个APP-push的运营活动, 计划在30分钟内完成5000w用户的push推送, 预计push消息点击率10%, 求push落地页系统的总访问量是多少? 答案: 5000w * 10% = 500w
2.评估平均访问量QPS->push落地页系统30分钟的总访问量是500w,求平均访问量QPS,答案: 500w/(30 * 60) = 2778, 大概3000QPS

如何评估高峰QPS?
根据业务特性, 通过业务访问曲线评估, 业务访问曲线可以看云平台的网站流量分布或通过分析日志生成出QPS曲线图,若为前者:高峰QPS = 平均QPS * (峰值流量 / 平均流量)若为或者:看峰值是普通值得多少倍,然后将普通值乘以该倍数
如果没有这个业务曲线,可以尝试临时将峰值计算为平常的几倍的方式进行处理

如何评估单机极限QPS?
根据压力测试来评估,服务上线前是需要进行压力测试的,通过压力测试发现,web层是瓶颈,tomcat压测单机只能抗住1200的QPS?这样的话5000QPS若10%=500QPS的流量到数据库,90%(4500)Redis的话还是能轻松抗住的,需要评估Redis服务器的带宽(按(峰值单日PV / 每天秒数) * 单页大小)),这样web单机极限的QPS是1200,一般来说要打个8折来留有余地,最终单机线上允许跑到QPS为1000

下面得出结论
现在峰值QPS是5000,单机QPS是1000,假设线上只部署了2台服务,能抗住吗?
不能,需要增加(5000/1000 - 2)三台服务器,并且为了保险起见可多增加一台共4台

假设你的项目的用户量有百万级,然后每天有100w的Pv那么这个时候,你的每个服务会有多高的QPS?每个服务需要部署多少台机器才可以抗住?机器的配置是多高?系统会对背后的MySQL, Redis, RabbitMQ等产生多高的QPS? 每个接口请求的QPS是多少?这些中间件需要部署多少台机器,用多高配置的机器?[面试2.0]

其实这个问题就是一个容量规划问题,跟上面一题有些类似,这里扩展说明一下,先给出一些公式:
单机能力 = 单机机器压测阈值QPS
单机负荷 = 前一天单机机器最大QPS
集群能力 = 单机能力 * 机器数
集群负荷 = 前一天集群最大QPS
单机水位 = 单机负荷 / 单机能力 * 100%
集群水位 = 集群负荷 / 集群能力 * 100%
理论机器数 = (实际机器数 * 集群负荷 * 集群水位) / (集群能力 * 水位标准(单机房:70%,双机房:40%,三机房:60%))
机器增减 = 理论机器数 - 实际机器数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2023年Java面试宝典

您的鼓励是对我的肯定,共建希望

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值