tomcat 附件导出出现:java.net.SocketException: Connection reset异常分析与解决

tomcat 附件导出出现:java.net.SocketException: Connection reset异常分析与解决

前言

之前阿里云服务器上有出现过,过期被停用过的情况,后来恢复后启动服务后就没有太注意过,直到今天过来用一下系统导出功能,所以出现了如下问题:

org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Connection reset

原因分析

经过网上一翻查询大概总结问题原因有如下两点:

  • 客户端取消了连接引起的
  • 服务器jvm 内存资源不足够?

看到这里,对于“客户端取消了连接引起的” 这个是可以直接排除的;对于“服务器jvm 内存资源不足够?” 这里不讨论它的可能性,我自己也特意检查了一下jvm 堆与非堆的内存使用情况发送并无异常,另外也对代码做了一翻检查也没有收获

最终确定问题

这里另外一个请求引起了我的注意,意外发在返回的内容被截断了???
这里我想到了使用了nginx ,是否是nginx 导致的?所以经过了一翻排查确认是nginx 引起的

  • nginx 将内容返回给客户端时如果内容过大缓冲大被用完会将数据临时缓存到: /var/lib/nginx/tmp/ 目录下,但此时nginx 权限有问题,所以导致了上面的问题

排查步骤如下

  • 看到 nginx 的 error log 在什么位置:

    vim /etc/nginx/nginx.conf
    
  • 检查异常日志

    vim /xxx/xxx/nginx_error.log
    

    nginx 错误日志,果然发现异常,
    open() “/var/lib/nginx/tmp/proxy/4/00/0000000004” failed (13: Permission denied) while reading upstream

  • 根据 “Permission denied” 提示看一下该目录下的权限:

    # 查看所属用户与权限:
    ll /var/lib/nginx/ -a
    
  • 授权:

    chmod -R u+rwx /var/lib/nginx/
    
  • 重启nginx

    systemctl restart nginx 
    

关于我

  • 关注不迷路,点赞走一波~ 转载请标注~
  • 公众号
    在这里插入图片描述

版权声明:本文为gu_zhang_w原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。