Connection reset by peer的常见原因及解决办法

背景

在Centos7服务器上,有服务A调用服务B的上传文件接口,约几十个请求过去后,出现Caused by: java.io.IOException: Connection reset by peer异常

Caused by: java.io.IOException: Connection reset by peer
        at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:1.8.0_361]
        at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[?:1.8.0_361]
        at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[?:1.8.0_361]

排查

根据网络上查询的结果,有以下几种常见情况

  • 服务并发处理处理不过来,会关闭其中的一些连接
  • 防火墙
  • 客户端关闭了连接(未通知服务端四次挥手,例如直接关闭客户端)

经排查不属于以上情况,最后定位到open files设置的值调小了导致的

我使用的Centos7,默认打开文件数为1024个,通过ulimit -a 可以查看open files

[root@localhost docker]# ulimit -a | grep open
open files                      (-n) 1024

解决方案

1.修改ulimit

vim /etc/security/limits.conf
# 在最后追加以下内容
* soft nofile 65536
* hard nofile 65536

或者使用如下命令直接追加至 /etc/security/limits.conf 文件

echo "* soft nofile 65536
* hard nofile 65536 " >> /etc/security/limits.conf

检查是否生效

[root@localhost docker]# ulimit -a | grep open
open files                      (-n) 65536

2.重启后台服务

至此问题解决!

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值