项目经验

jvm调优

线上young gc和full gc频繁,平均1天2-3次,需要优化。

观察老年代内存使用随着用户访问量的增大也不断增大,初步怀疑可能跟用户访问,,jmap dump内存信息,通过mat分析对象信息,发现String类型的对象占了绝大多数,通过支配树发现某个类型的字符串有很多,且一个字符串占了1.几M的内存,初步怀疑大对象所致,
同时redis 有些查询比较慢,耗时1秒多

优化代码,只存key,对象从数据库读,隔一段时间读取,优化,gc频率一周一次,redis查询时间也得到了优化

分库分表

存量数据,基于工具快速拆入到新库中,读取slave库
增量数据,直接写入新库,判断是否为新增的数据,是的话写入新库,读取的时候两边都读
难点:多线程(多机部署,获取id范围分片,基于redis的分布式锁,线程通信,设置屏障CountDownlatch,分表结束后校验)及并发(乐观锁加分片)

订单超卖

业务,数据库分离出来
下单减少库存
库存放redis,本地缓存
确保库存》=0(数据库的字段数据为无符号整数(unsigned bigint)或者通过事务),
减少对mysql行锁的竞争(应用层做排队。按照商品维度设置队列顺序执行,这样能减少同一台机器对数据库同一行记录进行操作的并发度,同时也能控制单个商品占用数据库连接的数量,防止热点商品占用太多的数据库连接)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值