上线一个抢单系统,7千多人并发系统即崩溃,请大神赐教。

技术问题 · oakzxd · 于 4年前 发布 · 5265 次阅读

刚上线一个抢单系统,早晨9:30开始,大概有6000多用户会进入系统的产品页面抢购。系统在大量访问涌入后几分钟就崩溃了。出错信息是redis达到了连接数的上线。目前服务器的配置是阿里云的redis 8G集群版,支持10000的并发数。 在redis崩溃之后,随之mysqld的cpu也达到了98%。但首先肯定是redis引起的崩溃。 请教各位大神。之前一直认为redis只是用做YII的session和cache所有,并不涉及到业务逻辑,没想到会在redis上首先出问题,那么这块应该如何优化呢。简单升级到80000的redis并发是否够用呢?还有什么别的方法吗。 另外,redis和mysql是否有连锁反应,导致mysql也达到了性能瓶颈呢。希望论坛大神给与指南。事情非常急,马上第二次的抢单即将开始。目前还没有什么很好的优化方法。

共收到 9 条回复
oakzxd#14年前 0 个赞

Fecmall#24年前 1 个赞

能宏观说一下你的项目的技术点?什么环境,php,以及你的项目用什么语言等等

Fecmall#34年前 0 个赞

是不是redis的连接没有释放?

https://blog.csdn.net/zengxuewen2045/article/details/52075529

https://blog.csdn.net/qq_22978533/article/details/82906427

参看下这个文章

如果解决了,回下贴子分享下经验,多谢

Fecmall#44年前 0 个赞

https://blog.csdn.net/Richard_Jason/article/details/52890959

netstat -an|grep 6379|wc -l  
 

6379是redis的端口号,执行下看看连接数

oakzxd#54年前 0 个赞

@Fecshop #2楼

项目很简单,就是基于fecshop的简单二次开发。用的php+ngnix+mongodb+redis的标准配置。核心逻辑没有动过。 ngnix在两台负载均衡服务器,redis单独一个服务器。mongodb用的本地安装的,和一台ngnix机器在一起。

商场用户不多,但是有个抢单活动,几乎所有人都在9:30分去下单抢余额。所以负载大的出奇。居然能到1w的秒并发。所以一上线就崩溃了,现在只能间歇的放订单来缓解。

一会我放几张服务器的负载图,供大神参考。

oakzxd#64年前 0 个赞

@Fecshop #2楼 redis就是用的fecshop的缺省配置,用于session和cache。因为感觉不涉及太多业务,只考虑到抢单时候可能的高mysql并发或者web负载,结果运行一分钟就redis报错,看阿里云服务端,redis链接已经满了。在fecshop里面,多人在一个商品里面下单主要会引发哪些负载呢,对redis的消耗为什么这么大。是不是有可能链接没有释放,如果需要释放,在框架里面的什么地方优化呢?非常急,下周一再抢单失败就可以直接关门了。

Fecmall#74年前 0 个赞

这个应该是从yii2框架入手解决这个问题,和fecshop关系不大

oakzxd#84年前 0 个赞

@Fecshop #7楼 明白,这个是yii2框架的东西,这个您有什么建议吗,还是直接把redis服务器升级就行。

Fecmall#94年前 0 个赞

@oakzxd #8楼 我没有搞过这种场景,让运维来协助解决吧。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics