首页 新闻 会员 周边

小程序活动被大量人访问造成的服务器cpu飙升,小程序直接崩溃

0
悬赏园豆:20 [已解决问题] 解决于 2020-11-03 14:13

小程序使用的阿里云,给出的反馈是
后端排查给您反馈:CPU和IOPS 没有任何瓶颈。而是在大量更新锁导致连接堆积,活动连接过高
建议从应用端更新逻辑,大量写入变为批量写入。下面几个语句占了大量的锁
1.人员表的更新
2.积分表的更新
3.公众号相关更新
4.授权更新
5.活动相关更新
这些也不能放到缓存中,防止数据丢失,而且也不能批量处理,因为都是单个单个的人访问的,有什么好的思路吗

但乱红尘熊的主页 但乱红尘熊 | 小虾三级 | 园豆:773
提问于:2020-10-30 16:42
< >
分享
最佳答案
1
  1. 对于不需要即时处理(允许一定的延迟)可以使用消息中间件(例:RabbitMQ)

  2. 更新锁,

  • 读写分离(降低读写锁之间的竞争)
  • 降低数据库锁的粒度,比如表锁变成行锁,个人更新自己的数据,但不会影响其他人数据
收获园豆:10
大志若愚 | 老鸟四级 |园豆:2138 | 2020-11-02 15:15

这个感觉可以,我去试试

但乱红尘熊 | 园豆:773 (小虾三级) | 2020-11-02 16:20
其他回答(1)
0

1、看需不需要实时更新
2、异步操作
3、限流
4、多弄几台数据

收获园豆:10
通信的搞程序 | 园豆:1747 (小虾三级) | 2020-10-30 17:16

需要,是客户参加活动的相关信息,比如授权发送等,已经添加了异步,并且cpu和iops是没有任何瓶颈的,就是同时有大量更新锁导致了链接堆积,有考虑使用db数据库跟sql的结合使用,不过db没用过(哭笑哭笑)

支持(0) 反对(0) 但乱红尘熊 | 园豆:773 (小虾三级) | 2020-10-30 17:21

@但乱红尘: 你的意思是同时很多人操作同一个活动取更新一个信息?那就获取锁的可以更新获取不到的直接返回不等待

支持(0) 反对(0) 通信的搞程序 | 园豆:1747 (小虾三级) | 2020-10-30 17:24

@通信的搞程序: 是多人更新多条信息,要记录每个参与活动人的信息,当大量人涌入,同时请求后,容易造成阻塞,本来想将参与人的信息已经行为活动记录到缓存,后面更新到数据库,但又怕丢失,后来决定还是用内存数据库坐中间库承接一下

支持(0) 反对(0) 但乱红尘熊 | 园豆:773 (小虾三级) | 2020-11-02 16:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册