爱陪小樱桃

导航

 

工作记录bug:

【job功能缺陷】分页捞数索引及数据状态不准确,造成job空跑问题:

  • 缺陷类型:job类型缺陷
  • 发现方式:大数据量时候分页功能测试时,发现分页阀值1000后面的数据无法被job执行。
  • 排查方法:查询日志:
    a.发现从第二次起,一直捞取前面执行过的1000条数据。
    b.查看开发代码:发现捞取数据的SQL是以更新数据为排序索引,所以一直捞取被执行过的数据。
  • 解决方案:
    a.捞数据的sql增加job处理方案,不会重复捞取已执行过的数据。
    通过以上方法,解决了问题,job成功将所有数据都跑过。

【功能缺陷】关联方金额存储方式与常规不同,导致优惠券金额显示不正确:

  • 1.发现方式:查询关联方用户优惠券接口时,发现页面显示4位小数,不是2位小数
  • 2.排查方法:
    a.日志查询,关联方接口返回4位小数。
    b.与关联方确认,关联方为了兼容积分类型金额(500分=1元)数据,所以其他金额也统一存储为4位小数。
  • 解决方案:
    a.与产品沟通进行2位小数的截断处理,返回前端。
    通过以上方法:解决了问题,前端金额显示正常。

【性能缺陷】异步调用多重嵌套共用一个线程池,造成调用死锁,请求报错:

  • 发现方式:
    多线程性能测试,高并发请求的时候,接口返回报错:
  • 排查方式:
    1.查询报错日志,发现异步调用超时,导致接口报错。
    2.查看开发代码,发现报错的方法,调用方也是异步方法,形成了异步嵌套。
    3.进一步查看日志,通过父子方法线程号定位,发现大部分线程都被父方法占用,导致子方法无法执行超时,造成死锁。
  • 解决方案:
    1.加大线程调用队列数量;从40调到500;
    2.调整异步嵌套调用方法的位置,调整到前面位置,使异步嵌套调用方法优先执行。
    3.新建线程池,各层嵌套,使用各自的线程池,
    通过以上方法解决了问题,高并发压测,没有在报错。
posted on 2024-07-06 16:05  cherry小樱桃  阅读(8)  评论(0编辑  收藏  举报