大文件下载导致的超时返回
随着业务的增长发现一个下载接口越来越慢,(原来数据量少的时候慢还可以下载,后来增长到十几万的时候发现就会超时)首先想到的是优化sql 由于查询的字段太多 在关联字段上之前已加过索引 ,减少子查询,下面两张图片是修改前后的对比 有什么好的意见建议请随便评论下
left join 左表 尽量筛选过后再连接后面的表,发现速度没有多少改变 ,只能尽量减少查询之后的逻辑(由于不可能一个sql 查询出所有的业务字段 只能在查询完后for 循环中添加剩余的字段查询逻辑),试过之后收效甚微,后来发现单独查询一个详情表的时候速度就很慢 意识到可能是中间的两个大字段text 类型的 这个设计之初就是没想到数据量大了之后的后果 此时也无法修改,硬着头皮搞吧,(顺便吐槽下需求 这个下载全部的数据 本身没有意义,除了打开excel后看着很爽。。。。。。我们把业务数据各个维度的统计都做得很完善了,完全没有必要嘛,害 。。。。吐完了接着写 ),好在之前先吐槽了说可能会很慢 客户接受了 说返回数据就行不管多慢。。。老铁们学到没 跟需求的谈判要留有余地。然后就改超时时间吧搞成五分钟
,最开始是一分钟超时 直接报504网关异常,五分钟绝对够了 我们是前后端分离的项目 所以改nginx 就可以了,可以直接在本地试验下 本地起下前后端
看下本地的ip
前端这么配置
后端
nginx 里面这么配置
然后就不超时了 慢慢返回吧