新意网点运营所产生的问题

发布时间 2023-09-07 12:10:04作者: glower

导致数据内存溢出

出现问题

1>网点工作人员在导出报表是去除掉所有的查询条件,导致返回数据量太大,服务器内存溢出

2>select * from project where ...

解决问题

1>前端设计

  • 限制导出数量上限
  • 防止连续点击导出按钮
  • 防止重复请求

2>后端设计

  • 使用count(*)统计数量后校验
  • 校验数量总量,如果超过规定的值则直接报错,返回错误信息给前端

3>sql优化

  •  游标分批导出大量数据,与前端沟通

 

并发读写数据脏读

出现问题

高并发下,多个请求同时读取一个共享变量,其他事务读取了未提交的数据(脏读)

解决方法

1>后端添加数据库事务,保证数据的一致性

2>使用ThreadLocal关键字进行线程封闭

3>使用分布式锁保证并发安全(redission)

数据库连接池占满

出现问题

一个后台轮询任务中,跳出循环导致事务未提交,积压大量数据库连接

解决方法

1>确保事务提交,Finally块中提交事务

2>缩小事务范围,避免长事务

3>检测连接使用情况,配置合理连接池

4>使用数据库监控工具诊断并优化