请教一下 Java 接口性能优化的方案

2021-08-12 17:42:09 +08:00
 qwer666df

正常一次一次点击返回时间是 300~700ms, 如果快速一直点击的话,就会卡住然后超时了, 这还是单机我一个人测试的的情况下
里面的操作大改是
1. 业务里面用了大量的同步 db 操作,select/udpate 的比较多
2. 有两个三方 sdk curl 的操作,但是这个耗时还好在 10ms 之内,所以问题还好

分段看了一下执行时间了一下,大多都是 db 的瓶颈好像

1208 次点击
所在节点    问与答
10 条回复
hand515
2021-08-12 19:44:43 +08:00
并发读写数据库

跟数据库就近部署
luckyrayyy
2021-08-12 19:59:43 +08:00
多大量?一般同机房的 db,数据库操作都在几毫秒的量级,除非你大量循环不然怎么也到不了几百毫秒。或者是跨城市的远程数据库?
Kimen
2021-08-12 20:14:46 +08:00
前端也可以用节流或者防抖控制一下点击
spikie
2021-08-12 20:25:34 +08:00
1. 前端限制点击间隔
3. 后端开线程池异步化处理
4. 增加接口服务器并发线程
akira
2021-08-12 20:49:11 +08:00
你都说了瓶颈在 db,那就是针对你的 select/update 优化啦
swim2sun
2021-08-13 07:44:59 +08:00
1.看看能不能并行话
2.优化查询
3.考虑加缓存
qwer666df
2021-08-13 09:18:15 +08:00
@spikie #4 业务不能限制点击次数, 只能看看第二步线程池了, 这个还真没在实际上项目中用过, 谢谢大佬提醒


@akira #5 昨天晚上看了下, select/update 没啥优化的了, 在研究能不能改成异步 sql


@swim2sun #6 缓存是要加了, 这项目太老, 好多业务头疼
waitingChou
2021-08-13 17:15:24 +08:00
听起来感觉像是数据库锁竞争,没 SQL 也没啥思路。同一个用户的话做点击频率控制下

看你描述操作的内容不少,追求前端响应体验的话,可以把点击操作成功,改成点击提交成功。
接口只提交操作任务,后台慢慢执行,这个要看业务上能不能接受
qwer666df
2021-08-13 17:22:26 +08:00
@waitingChou #8 是送礼的逻辑, 所以 sql 操作比较多, 也就不好贴出来了,. 因为是送礼, 所以不能控制频率, 后端这边只能提高性能, 白天看了一圈代码发现, 里面有用到事物, 还有一些方法甚至加上了 synchronize, 下周打算都去掉看看并发吧, 不行再上缓存了
akira
2021-08-14 13:57:10 +08:00
@qwer666df 那考虑过做数据库的硬件升级没, 升级也能解决大部分问题

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

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

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

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

© 2021 V2EX