数据安全业务操作基本原则,Broken pipe,伪代码,生成xls下载文件响应返回
数据安全业务操作基本原则,Broken pipe,伪代码,生成xls下载文件响应返回
1.查询数据的原则,不要跨度时间太长。
比如尝试获取1年的数据,业务报表等不支持,测试的步骤:
1. curl客户端导出xlsx失败
--connect-timeout 30 --max-time 300 测试发现这两个参数没有作用。 curl -X GET -o scooterOrder_output_file_250101_250331.xlsx --connect-timeout 30 --max-time 300 "http://XX.XX.1.XX:1168/console/cipcOrder/exportNew?settleStartTime=20250101000000&settleEndTime=20250331235959"
2. 通过test接口来触发邮件发送,失败
auto-java-transRenterService 恢复到20秒 ,设置feign超时没有解决 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 60000 ribbon.ReadTimeout = 60000 ribbon.ConnectTimeout = 60000
3. 最终在腾讯云dmc按SQL脚本,分3个月一次来导出。成功
结论:大数据量的,不介意来操作。会超时
2.上架商品 去掉人像,避免纠纷。 上传的原则。 如果存在头像,可以去掉再上传。
3.提取数据原则,数据安全管理。需要走流程来操作提取。 预防营销可能会拿到数据骚扰客户,导致甲方的投诉。
4.信息安全处理 观念,数据备份。 资源释放之前/余额不足等关键环节的提醒通知(多人,多方式短信/邮件/语音等),数据备份等,本地机房的物理备份,云服务器的异地备份等方案。
5.阿里云AI助理等咨询回答,仅仅是参考信息,关键确认的问题,必须得提工单咨询技术支持来答复。避免AI的以偏概全,误导信息。
扩展
1.
Uncaught exception thrownorg.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
ClientAbortException: java.io.IOException: Broken pipe 异常通常表示客户端在服务器完成响应前关闭了连接。
🔍 异常原因分析
客户端主动中断:用户刷新页面、关闭浏览器或取消请求时,客户端会主动关闭连接。
网络问题:网络不稳定或延迟较高可能导致连接中断。
服务器配置:服务器超时设置过短,无法处理耗时较长的请求。
大文件传输:进行文件上传、下载或大数据量传输时,传输时间过长可能引发异常。
代理服务器超时:Nginx等反向代理服务器的读超时设置(如默认60秒)若短于后端处理时间,也会关闭连接。
服务器负载过高:服务器资源(CPU、内存、带宽)不足导致处理缓慢,引发超时
2.
//伪代码,生成xls下载文件响应返回
@RequestMapping(value = "/exportNew", method = RequestMethod.GET) public ResponseData<?> exportNew(TransReqVO reqVO, HttpServletResponse response) { try { reqVO = this.initParam(reqVO); reqVO.setExcel("excel"); logger.info("代步车订单查询条件错误日常开发入参,reqVO={}", reqVO.toString()); //数据查询 if(responseData != null && ErrorCode.SUCCESS.getCode().equals(responseData.getResCode())){ ExcelUtil<TransNewModel> excelUtil = new ExcelUtil<TransNewModel>("代步车订单"); try { //数据转换 本地生成需要 @ExcelElement //导出 excelUtil.export(convertList); //设置xls响应类型-关键 excelUtil.flushToRequest(response, "NEW_TRANS_" + DateUtil.DATETIME_SEC_STR_FORMAT(new Date())); return null; } catch (Exception e) { logger.error("Export trans on failed,reason is :", e); } }else{ return null; } } catch (Exception e) { log.error("Get tenant order export exception :", e); } return null; } public void flushToRequest(HttpServletResponse response, String fileName) throws Exception { if (fileName == null) { fileName = "default"; } try { response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", String.format("attachment;filename=%s.xls", new String(fileName.getBytes("gb2312"),"iso8859-1"))); OutputStream ouputStream = response.getOutputStream(); exportStream(ouputStream); } catch (Exception e) { logger.error("导出excel错误:", e); throw e; } } public HSSFWorkbook wb; public void exportStream(OutputStream o) throws Exception { try { wb.write(o); o.flush(); o.close(); } catch (Exception e) { logger.error("导出excel错误:", e); throw e; } }
浙公网安备 33010602011771号