美文网首页
spring boot下载大数量文件导致nginx崩溃解决方案

spring boot下载大数量文件导致nginx崩溃解决方案

作者: 鳗鱼的幻想 | 来源:发表于2017-08-10 23:03 被阅读0次

    参考资料:http://blog.csdn.net/tsytdhs163/article/details/7889641

    情况:

    公司后台查询数据,用户反应下载超过1各月的数据时,页面就会崩溃,报错为nginx 504超时

    解决办法:

    按照以上链接的思路,主要是在写入excel的时候,每一小段时间久向nginx返回信息,与客户端建立长连接
    然而考虑到我们后台的架构,必须将生成excel的生成过程改写到controller中。
    另外文中的response.getWriter().write功能和spring boot的框架冲突,运行过程中会报出:
    getWriter() already been used 的错误,经过google,使用getOutputStream()代替即可,通时write的内容改为getBytes():

    response.getOutputStream().write(new StringBuffer().append(fileName).toString().getBytes());
    response.flushBuffer();
    

    此处write的内容应该生成文件的url,保持长连接的代码也一样:

    response.getOutputStream().write(" ".getBytes());
    response.flushBuffer();
    

    页面通过ajax和layer.load()创建等待的遮罩,在ajax成功返回后再次submit表单:

    image.png

    注意此处由于url的文件后缀的“.”直接带url参数会导致无法被服务端识别完整的url,因此需要将前后缀分开提交。
    最后根据url用IOStream下载文件即可。

    image.png

    相关文章

      网友评论

          本文标题:spring boot下载大数量文件导致nginx崩溃解决方案

          本文链接:https://www.haomeiwen.com/subject/grpkrxtx.html