qwer666df
V2EX  ›  问与答

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

  •  
  •   qwer666df · Aug 12, 2021 · 2457 views
    This topic created in 1920 days ago, the information mentioned may be changed or developed.

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

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

    10 replies  •  2021-08-14 13:57:10 +08:00
    Finest
    Finest
    Aug 12, 2021 via iPhone
    1
    并发读写数据库

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


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


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

    看你描述操作的内容不少,追求前端响应体验的话,可以把点击操作成功,改成点击提交成功。
    接口只提交操作任务,后台慢慢执行,这个要看业务上能不能接受
    qwer666df
    qwer666df
    OP
    Aug 13, 2021
    9
    @waitingChou #8 是送礼的逻辑, 所以 sql 操作比较多, 也就不好贴出来了,. 因为是送礼, 所以不能控制频率, 后端这边只能提高性能, 白天看了一圈代码发现, 里面有用到事物, 还有一些方法甚至加上了 synchronize, 下周打算都去掉看看并发吧, 不行再上缓存了
    akira
    akira
    Aug 14, 2021
    10
    @qwer666df 那考虑过做数据库的硬件升级没, 升级也能解决大部分问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1863 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 06:14 · PVG 14:14 · LAX 22:14 · JFK 01:14
    ♥ Do have faith in what you're doing.