遇到个高并发的问题

2022-03-15 10:11:58 +08:00
 luxinfl

配置:5 个 slb ,10 台 16C64G 的服务器。
接口:一个天气页面的运营位查询接口。业务逻辑是本地缓存+一次 get 请求。本地缓存时间可以忽略不计。
后端服务配置:默认 tomcat 设置,200msms 的获取连接时间,200ms 建立连接时间,500ms 的数据传输时间,默认最大路由数 30 。
现状:六点到八点间每台 slb 的 ttps 稳定在 80w 左右,某个时间会升高到 100w+。此时服务时延会变高(10ms 升到 1600ms 左右),错误数也会升高,接口成功率在 99.95%左右。  

有什么办法可以让这段时间的时延降低麽

4692 次点击
所在节点    程序员
41 条回复
shanghai1998
2022-03-15 10:14:56 +08:00
你的 80w 是多长时间的? 1 分钟?
paradoxs
2022-03-15 10:26:46 +08:00
是缓存被击穿了么? 多配点缓存。
defunct9
2022-03-15 10:29:10 +08:00
5 个 slb 是什么? f5|haproxy|nginx ???
luxinfl
2022-03-15 10:37:16 +08:00
@shanghai1998 就 tps 啊

@paradoxs 不存在的,用的本地缓存,到死都不会消失的那种

@defunct9 就是 Nginx.
defunct9
2022-03-15 10:44:45 +08:00
加到 10 台 nginx 吧,估计是 https 的卸载能力不够了。
libook
2022-03-15 10:46:16 +08:00
看一下缓存命中率如何,如果绝大多数请求都不命中缓存,那么缓存就是无效的,你得看是不是缓存释放太快,还是缓存空间不够用,还是你的业务不会有重复的返回数据。
MoYi123
2022-03-15 10:57:17 +08:00
比如应用服务器改成只回 helloworld, 把 https 换成 http, 不走 http 直接调用函数去运行,
本地尝试复现问题, 把问题找到再说吧,
不然我们也不知道具体情况.
luxinfl
2022-03-15 10:58:36 +08:00
@defunct9 服务器要钱啊。。。
@libook 我们是按照国家运营,国内的是一样的。相当于 10 台服务器是一样的数据。
defunct9
2022-03-15 11:00:33 +08:00
嗯,不愿意加钱,好办。把后端的 tomcat 换成 Go 写的程序就行了。
libook
2022-03-15 11:01:34 +08:00
@luxinfl #8 你没回答我的问题呀,我问的是缓存命中率如何,你可以用日志或者其他方式来统计一下,比如每分钟的命中率多少。
timethinker
2022-03-15 11:24:10 +08:00
推荐一篇文章,讲解的比较系统: https://mp.weixin.qq.com/s/apUVMfAI52uvc7U-iOVvKg
micean
2022-03-15 11:29:34 +08:00
正常 10ms ,不会是缓存的问题,已经到极限了吧
天气预报这种业务能不能上 CDN?
angryfish
2022-03-15 11:56:13 +08:00
1.出口带宽是多少,峰值是的带宽有没有打满
2.确认是 nginx 到达上限还是 tomcat 到达上线。如直接请求 tomcat 能否快速返回结果。
3.程序是否可以进一步优化,如结果直接静态化为文件数据存放在 nginx ,请求直接走 ng 。等等。
vace
2022-03-15 12:21:10 +08:00
天气这种允许一定延迟的场景,被动更新,按参数生成静态文件放 CDN ?
shanghai1998
2022-03-15 13:27:29 +08:00
你看清楚了,阿里云 slb 上的并发是一分钟,不是 tps ,如果是 tps ,你 10 台机器,1 台要抗 8w 并发每秒, 就算程序是 hello world ,你的机子也扛不住。实际可以通过阿里云监控,可以查到并发的瓶颈是在哪里,正常是在数据库和缓存,这个时候加服务器意义不大了
ZSeptember
2022-03-15 14:22:50 +08:00
业务是比较简单的,先定位问题,主要是看缓存命中率是不是预期的
luxinfl
2022-03-15 14:41:42 +08:00
@libook 这个只能说国内会 99.99%命中缓存,因为前台查询不会走数据库
luxinfl
2022-03-15 14:44:14 +08:00
@micean 不是天气预报,是天气页面里面的广告位
@vace 是广告,而且这个广告确实基本不会变
@shanghai1998 华为云,监控上面确实是 tps ,每五分钟统计一次,5 个 slb 都是 100w +,确实一整天的流量就集中在早上两小时。
luxinfl
2022-03-15 14:45:10 +08:00
@vace 有个场景,需要用设备号去查询用户标签信息,会根据这个筛选,这一步省略不了。
haython
2022-03-15 15:11:13 +08:00
每秒 80 万,2 个小时就 50 亿了。5 个 slb ,每个都稳定在 80 万。如果我没算错,你这个数据肯定是错的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/840400

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX