当前我们公司的的业务面向政府的公益项目,应用程序不是很复杂,后端历史遗留使用的 springboot ,被我拆成无状态的服务了。
我们的业务挺简单的,现在我们的部署方式为腾讯云自建的 k8s ,3 台 2c 4g master 节点,2 台 8c 16G work 节点 数据库腾讯云 2c 4g redis 2g 。 目前平台没啥用户,基本就是纯部署给领导看的。
现在公司活动五一后即将开始,预估一天上百万用户,我们将 2c4g 数据库换成腾讯云的 tdsql-c 32 核数据库,其他硬件不变,当前压力测试,单登录接口只要 1800 的 qps ,业务高频率接口一起跑不到 3000 的 qps ,部署了 4 个实例,两台服务器 cpu 百分之 70 左右,内存百分之 60 多,接口响应到了 1s 来了,压测前端程序打开就开始转圈圈。我该如何扩展服务器,和数据库啊?
目前我的方案: 1.优化程序增加,把历史遗留的程序多多做缓存。 2.腾讯云 2 台负载均衡。域名解析指向这两台 3.增加 N 台 worker 节点,多部署几个实例 预计 4-6 台
目前老板给的指标是政府的上一个活动,一天近百万用户增长,让我们一点要保证业务的流畅性和稳定性,别再第一天就掉链子程序挂了。大家公司的业务有多少并发啊?有没有大神指导一下方向??
1
zhonj OP 因为不知道如何继续去扩展,目前预算还没有往上报,活动持续时间应该在两个月左右。后面应该又会恢复到当前状态。预算只要不是太离谱应该都没啥问题
|
2
chiron688 2023-04-21 23:52:07 +08:00 via iPhone
一天百万级别的增长……这两台 8h16g 确实不够看,更别说还有带宽的问题,估计十万级别的并发就能把带宽给塞满了
|
3
mikeguan 2023-04-22 00:09:36 +08:00 via Android
不用个两位数以上节点没必要上 k8s
|
4
eDeeraiD0thei6Oh 2023-04-22 00:12:29 +08:00
公益项目不是该政府出钱吗?
|
5
gen900 2023-04-22 07:06:29 +08:00 via iPhone
我也想说是不是瓶颈在带宽。70%cpu 甚至再高一点才是理想状态,也不至于是瓶颈
|
6
zhonj OP @eDeeraiD0thei6Oh 是的啊,得要有个预算报过取
|
10
weiweiwitch 2023-04-22 11:06:56 +08:00
你是技术负责人,还是说有技术总监或 CTO 在你上面?这个架构问题一般要负责人去考虑和兜底的。
一天百万级不等于天天百万级。既然上了云平台,又用了 k8s 了,就在负载重的初期,把服务器尽可能堆上去。等负载过了,逐步缩容。 至于要加多少服务器,如果项目重要,就尽可能放开了加,加到你自己有信心为止。这个成本让老板评估。 只是要考虑清楚,整体架构是否有扩容上的问题。别加了 N 多服务器,还是被单点问题搞崩了,给老板落口实。 监控有吗? 相比于考虑是否能抗住负载。从监控数据中,把性能问题排查和解决清楚更重要。 程序里面要有各种探针什么的。压测时要在监控面板检查这些探针上报的指标,看是否有不符合预期的。不是只看看 CPU 内存啥的就够了。延迟到 1 秒了,要分析下请求为啥要 1s ,卡在 IO 上还是 CPU 处理上还是其他什么原因。只有把可能的负载问题都解决了,才能说有信心能成功上线。 压测很重要! 压测要尽可能覆盖重要场景,能覆盖大多数场景就更好了。 压测的量,有条件要模拟峰值的量。一天进百万用户,你就找时间灌百万甚至千万用户进去。 QPS 到 5000 ,就要至少维持 5000 甚至 1W 的 QPS ,跑个半天一天。带宽什么的也是。 并且一定要在生产环境要用的服务器上做。 只有测清楚了,才能有信心上线。 老板的话一般都有水分。百万用户,实际到的不一定有那么多。 这么多的量,任何甲方都要好好的评估下这个公司是否有技术能力吃下才敢给。 所以,也可以稍微放宽心态。别太紧张。 |
11
weiweiwitch 2023-04-22 11:08:59 +08:00
@zhonj 压测,一般也至少要用云商的机器去当施压机。而不是自己公司的。不然没等压力上去,你们的出口带宽就不够了,或者你们的路由器就先崩了。
|
12
eDeeraiD0thei6Oh 2023-04-22 14:12:46 +08:00
@zhonj 政 x 府的单一般都需要给个一二三期分阶段,
让客户估计在各个阶段的用户峰值,或者你去收集客户信息给他们估算,显得专业。总之就是给客户提出问题,他们不知道怎么做,然后你站出来说我们有经验可以协助。总之就是得显出你专业,不管是在哪个方面。 |