- 博客(15)
- 收藏
- 关注
原创 批量协议支付场景优化方案分享
随着我们系统协议支付订单量的增加,我们迫切需要提升系统的吞吐量。过去,每接收一笔订单,我们都需要发送一次MQ消息,再由MQ进行消费,然后逐条向第三方渠道发送支付请求。随着订单数量的增加,这种逐条发送的方式导致系统吞吐量较低。同时,第三方渠道在同一时间接收过多请求也容易导致吞吐量下降,甚至出现一些超时问题。将之前逐条发送的支付请求参数组装成一批次,并一次性发送给第三方渠道,有效减少了请求次数。通过以上优化措施,我们成功提升了系统的吞吐量,同时有效避免了因请求过多导致的超时问题。
2024-05-21 14:35:37
168
原创 记录生产环境异步线程池配置用错,导致服务器崩溃问题
由于在生产环境误判了某个高峰时间段下的接口并发量,本以为只有一分钟并发几百的量,就设置了自定义线程池的阻塞队列为100,而真实并发量在高峰时段时达到了分钟近1-2k的并发量,每秒均10-20的请求,导致线程池阻塞队列溢出,而此时线程池的设置的拒绝策略是返回调用方执行,变成了主线程去执行,而这个接口有点耗时,导致tomcat的主线程一直不被是否,后续进来的请求都没有空余的线程去处理,导致客户端timeout。
2024-02-02 15:47:09
238
原创 线上内存溢出问题总结
对sql进行了优化,尽量减少这样使用sql,并且即使使用if的过滤条件情况下,也得设置一个默认条件查询,这样即使if的条件不成立的情况下也至少有一个默认的过滤条件,比如如果传入的列表集合为空的情况下,只默认查5条订单,这样就不至于导致全表扫描造成内存溢出的问题。监控日志,发现导出的日志有一段日志前后的间隔时间相差20多s,于是定位到该段代码发现同事写的sql有问题,导致全表扫描了订单,一次性把订单表数200w的数据查询出来了,导致内存溢出的结果。后台会员对账单导出sql使用不当导致内存溢出,服务崩溃。
2023-10-09 18:06:50
63
1
原创 深页查询优化
针对上面的问题,看了一下发现目前的后台订单查询sql,每一次查询,不管是翻页和不翻页都会把所有的数据查询出来,但其实后台管理页面只展示10条数据,根据不需要每次查询出所有数据返回给前端,这是一个主要问题,其次查询sql也可以进行一个优化,没有使用索引,也没有限制每次查询的数据量。由于我们的是订单系统,每天产生的订单也特别的大,造成后台查询订单的时候特别慢,存在一个深页查询的问题,现在后台管理页面查询近一个月订单的时候将近10s左右。然后这里查询出来当页展示的数据之后,我们还得把数据的总量查询出来。
2023-09-27 16:51:47
64
1
原创 同事使用异步线程不规范,导致异步任务阻塞迟迟未处理
问题场景:生产环境同事使用了CompletableFuture作为异步线程处理任务,但是用这个异步开启线程的时候并没有指定线程池,所以当我们的系统订单量很多了就出现了这些异步任务都阻塞了在等待处理,所以造成了本来是想通过异步任务去快速处理业务的,结果因为异步任务太多,导致这个异步任务也一直在等待处理。2.使用异步线程池时应该指定自定义异步线程池,避免导致线程被无限创建,并且有些异步线程的等待队列是很大的,导致单量大了之后,异步任务被一直丢进等待队列中,造成异步任务迟迟不处理。
2023-09-07 20:33:46
219
1
原创 记录一次业务系统redis没加前缀撞值问题
由于公司的两个系统共用到同一个redis数据源,在A系统存值的时候直接使用的订单号存值,在B系统的时候也是用这个订单号作幂等处理的时候,导致B系统还没有开始存值,取值的时候就取到了,导致出现了撞值现象。redis存值的时候,一定记得带上唯一性标识的前缀,免得存入的值,被其他系统给获取了。
2023-07-28 15:19:47
47
1
原创 类继承父类后,前端请求后后台打印入参报文不显示父类字段问题
产生原因:因为接口入参类继承了父类的一些共同字段,并且子类和父类都使用了@Data注解,导致子类重写了父类的toString方法,入参打印的时候默认使用的是子类的toString方法。处理方案:将子类的@Data改成@Getter、@Setter,在父类里加toString方法。问题场景:前端请求接口时候,部分接口入参打印的路径不全。
2023-03-27 17:06:04
518
原创 记录测试环境部署服务找不到实体问题
产生原因: A服务依赖B服务的代码,因为部署的版本是本次需求版本的上一个版本代码,所以A部署的时候找的代码是B服务上一个版本的代码,导致没有取到最新B服务的代码,报了某些实体类找不到的问题。问题场景:刚提测了一个版本需求,测试人员在部署的时候报了实体类找不到,导致服务构建失败。解决方案:优先部署依赖的服务上去,最后在部署依赖的代码。顺序:B部署-->>A部署。
2023-03-27 11:07:11
99
原创 filter过滤器和interceptor拦截器
interceptor拦截器只能拦截controller的请求,属于spring层次的拦截器。filter过滤器在容器内的最外层,属于最外层拦截,
2023-02-07 21:21:26
78
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人