请求量猛增,系统优化,服务优化

公司上个月用户量增加到160W,日活在50W,日请求量在3亿条,并发在4万左右。

我们公司框架用的spring cloud 集成了 nacos 、zuul、xxljob、sharding分库分表、redis、rocketmq。

遇到好多问题:

1、当时买服务器的时候磁盘买小了100G,打日志都不够。有预见性的同学可以先计算一下磁盘用量再购买

a、nginx使用日志切割sh,每天定时切割,并删除日志

b、nacos日志超级大,每天都有几十个G,因为已经上线,不想重启,索性还是用sh命令去删吧

c、业务日志也是比较大的,入参,出参你得打印吧,而且每个人的开发习惯不一样,为了好定位问题,还是需要的。前期降低留存时间呗。后面服务重启扩大机器磁盘到500G了。

2、自建的redis集群有一台服务进程被机器杀死了,没搞明白这么恢复。宕机半日。

当时用的https://www.cnblogs.com/ywrj/p/9531800.html 文章指导搭建的。是用命令把主备联系起来的。维护成本高

后面索性购买了云redis,对中间件不是非常熟的朋友还是直接买吧,省心

后面需要修改一下配置,redis删除key的模式调整,我用的是allkeys-lru,反正redis里的数据都是可以被删除的,所以就使用删除所有key中最少命中的规则去删除。

3、遇到服务跑着跑着就卡住了。cpu飚高至100%

定位gc发现youngGC与fullGC是否过于频繁或者耗时过长,从而对症下药。我们下面将对G1垃圾收集器来做分析,这边也建议大家使用G1-XX:+UseG1GC

修改fgc方式为:

-XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:MaxGCPauseMillis=200

4、某台服务出现问题为什么会导致所有流量下降?

谢特,zuul中没有加熔断。度娘了一下随便找了一篇文章,加入熔断。看学习文章总是看见,自己搭建工程的时候总是会漏很多组件。解决单点服务故障导致全服务不能用问题

5、新问题来了,数据库总是显示高并发压力,事务未提交。数据库cpu100%。

后面发现是2个问题

a:数据库cpu100%,发现大量行扫描。比某次上线多了几个数量级,原先10W/s-100W/s行扫描,现在分分钟1000W/s-10000w/s。这是坑爹呢,一顿索引一顿乱填加,并没有乱用。后面接口做redis优化,不查数据库总好了吧。

最终还是定位出某个接口,索引颗粒度不够,每次查询行扫描几千万行,修改业务逻辑+redis缓存解决。

b:我们使用的服务器容器是Undertow,他有2种线程,1是Io线程一般是核数,最低2个,还有一个是工作线程一般是io线程的8倍。扩大工作线程数解决服务执行任务阻塞问题。解决数据库总是显示高并发压力,事务未提交的问题。

https://blog.csdn.net/zhangjunli/article/details/89207038

持续迭代中

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值