工作中遇到的问题

234 阅读3分钟
  • 1 文件上传 base64去接入 引发线上OOM

  • 2 多线程调用feign接口 request参数丢失

  • 3 lombok @Data与@builder一起使用 空构造器丢失

  • 4 用对象当做map的key 未按照业务逻辑重写hashcode方法

  • 5 logback配置异步打印日志导致threadLocal中的数据获取不到

  • 6 多线程(线程池)改造后 ThreadLocal获取数据丢失

  • 7 所以不要在事务中开启另外的线程,去处理业务逻辑,这样会导致事务失效

  • 8 opeignfeign + OkHttp + gzip导致问题

  • 9 squirrel-service服务dubbo线程池耗尽,导致依赖该服务的其他服务不可用 选修课功能,由squirrel服务提供;登录接口会依赖squirrel-service服务查询登录用户是否是选修课老师 选修课抢课时:squirrel服务中dubbo线程池耗尽,导致登录接口不可用 线程池不可用原因:家长给学生选课前,会查询选修课活动列表,查询列表时循环调用ding-service查询学生和班级信息,占用了大量的dubbo线程,导致其他服务调用squirrel服务时,都提示dubbo调用超时,线程池耗尽的错误 解决方式:会查询选修课活动列表,避免循环调用dubbo接口,改成批量查询;登录接口调用选修课dubbo接口时,先判断机构是否有该模块权限;最好能服务降级

  • 10 sloth-flex-service服务单线程消费门禁识别日志,消费速度慢,服务出现oom,导致rabbitmq大量消息堆积 解决方式:利用线程池多线程消费门禁识别日志,提示消费速度

  • 11 选修课:学生报名选课接口并发高,导致服务不可用 原因:学生报名选课时,加了分布式锁(选修班id),其他学生对同一个选修班发起报名选课请求时,会等待4秒时间去获取分布式锁,导致大量报名选课请求堆积 解决方法:学生报名选课时,如果未获取到分布式锁,不再等待获取锁,直接返回失败;前端限制请求频率,发起一次报名选课请求后,按钮置灰,2秒后可以重新请求;服务端使用sentinel对报名选课接口限流;

  • 12 请假状态变更mq消息重复发送,消费者做幂等处理

  • 13 塔下魔蓝平台大量设备离线 原因:服务器配置调整最大文件打开数使用了默认的1024,设备与mqtt服务器建立超过配置的最大打开文件数的连接 解决方案:服务器配置调整最大文件打开数到655350

  • 14 家长端首页分页查询学生消息接口速度慢,出现超时,mysql深分页优化

  • 15 查询教师课表最大节次时,开始时间为20220831,结束时间为20230131;程序员遍历查询课表 for (int i = 20220831; i <= 20230131; i++),导致查询数据库的次数过多,导致接口超时;实际遍历次数应该为开始时间到结束时间的日期,而不是数字