1. java.net.SocketTimeoutException

这个异常比较常见,socket超时错误,超时分为连接超时和读取超时。一般有 2 个地方会抛出这个

  • 一个是在调用Socket.connect方法的时候,这个超时参数由connect(SocketAddress endpoint,int timeout) 中的后者来决定
  • 还有就是在调用Socket.read方法的时候,setSoTimeout(int timeout),这个是设定读取的超时时间。它们设置成 0 均表示无限大。

连接超时往往是由于网络不稳定造成的,但是读取超时不一定是网络延迟造成的,很有可能是下游服务的响应时间过长。

2. java.net.ConnectException: Connection refused: connect

该异常发生在客户端进行 new Socket(ip, port)或者 socket.connect(address,timeout)操作时,原因:指定 ip 地址的机器不能找到(也就是说从当前机器不存在到指定 ip 路由),或者是该 ip 存在,但找不到指定的端口进行监听。

应该首先检查客户端的 ip 和 port是否写错了,假如正确则从客户端 ping 一下服务器看是否能 ping 通,假如能 ping 通(服务服务器端把 ping 禁掉则需要另外的办法),则看在服务器端的监听指定端口的程序是否启动。

3. java.net.SocketException: Socket is closed

该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了 Socket 的 close 方法)再对网络连接进行读写操作。

4. java.net.SocketException:

Connection reset或者Connect reset by peer:Socket write error

  • connection reset by peer在调用write或者read的时候都会出现。按照glibc的说法,是such as by the remote machine rebooting or an unrecoverable protocol violation。从字面意义上来看,是表示远端机器重启或者发生不可恢复的错误。

  • 从我的测试来看,目前只出现在对端直接kill掉进程的情况。

    • 对比tcpdump的截包图来看,直接kill掉远端进程的话,远端并没有发送FIN序号,来告诉对方,我已经关闭管道,而是直接发送了RST序号。

      比如:server(tomcat)在向客户端client发送数据的过程中,client被kill掉了,发送RST数据包,中断了TCP连接,会出现这个异常,异常如下:

      org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer

  • 而远端如果调用close或者shutdown的话,是会发送FIN序号的。按照TCP的四次挥手来看,是需要FIN这个序号的。

    个人猜测,如果在本端没有收到对方的FIN序号而直接收到了RST序号的话,表明对端出现了machine rebooting or an unrecoverable protocol violation,这时候对这个管道的IO操作,就会出现connection reset by peer错误

该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个。

  • 第一个就是假如一端的 Socket 被关闭(或主动关闭或者因为异常退出而引起的关闭), 另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。

  • 另一个是一端退出,但退出时并未关闭该连接,另一端假如再从连接中读数据则抛出该异常(Connection reset)。

5. java.net.SocketException: Broken pipe

指通信管道已坏。发生这个异常的场景是,通信的一方在收到“Connect reset by peer: Socket write
error”后,如果再继续写数据则会抛出 Broken pipe 异常

生产情况下发生此错误的场景:

一个java服务作为websocket client启动一个定时任务线程向远端websocket server发送请求,结果这个socket已经关闭了,于是会发生Connect reset by peer

之后这个线程30秒后继续向websocket server发送请求,则会抛出broken pipe

使用prometheus通过actuator监控spring boot服务。prometheus读取超时了,断开了连接。而这时候management tomcat还在处理请求,它并不知道prometheus已经断开了连接,处理完成请求后再将结果发给prometheus,就broken pipe了

6. java.net.SocketException: Too many open files

指进程打开文件句柄数超过限制。当并发用户数比较大时,服务器可能会报这个异常。这是因为每创建一个 Socket 连接就需要一个文件句柄,此外服务端程序在处理请求时可能也需要打开一些文件。
lsof -p pid命令查看进程打开了哪些文件,是不是有资源泄露,也就是说进程打开的这些文件本应该被关闭,但由于程序的 Bug 而没有被关闭




如果没有资源泄露,可以通过设置增加最大文件句柄数。具体方法是通过ulimit -a来查看系统目前资源限制,通过ulimit -n 10240修改最大文件数。

7. java.io.EOFException: SSL peer shut down incorrectly

java.io.EOFException: SSL peer shut down incorrectly
com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 0

手动curl了对方的接口,发现OK

原因:网络波动导致问题

my csdn: 生产问题:java.io.EOFException: SSL peer shut down incorrectly

java常见的网络异常相关推荐

  1. Java 常见内存溢出异常与代码实现

    Java 堆 OutOfMemoryError Java 堆是用来存储对象实例的, 因此如果我们不断地创建对象, 并且保证 GC Root 和创建的对象之间有可达路径以免对象被垃圾回收, 那么当创建的 ...

  2. Java常见内存溢出异常分析

    Java虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等,而Hotspot jvm的实现中,将堆内存分为了三部分,新生代,老年代,持久带,其中持久带实现了规范中规定的方法区,而 ...

  3. java常见的敏感异常

    1.java.io.FileNotFoundException:泄露文件系统结构和文件名列举 2.ava.util.jar.JarException:泄露文件系统结构 3.java.util.Miss ...

  4. Java基础知识强化99:Java 常见异常及趣味解释

    常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎:) 1. java.lang java.lang软件包是java语言的核心部分,它提供了java中的基础类. java.la ...

  5. Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制)

    原文:Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制) 异常机制和File类 异常机制 基本概念 异常就是"不正常"的含义,在 Java 语言中主要指 ...

  6. 常见的Socket网络异常场景分析

    原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 在目前微服务的背景下,网络异常越来越常见了,而有一些网络异常非常模糊,理解什么情况下会导致什么异常,还是有一定难度 ...

  7. Connection reset by peer的常见原因及常见网络异常

    Connection reset by peer的常见原因: 1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭: 如果知道实际连接服务器的并发客户数没有超过服务器的承载量,则有可能是中 ...

  8. 【Java基础】Java常见的异常

    Java常见的异常 1. java.lang.NullPointerException (空指针异常)调用了未经初始化的对象或者是不存在的对象 2. java.lang.ClassNotFoundEx ...

  9. Java 常见异常种类

    Java 常见异常种类 参考文章: (1)Java 常见异常种类 (2)https://www.cnblogs.com/cvst/p/5822373.html 备忘一下.

  10. Java常见异常及解释

    常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎:)) java.lang ArithmeticException 你正在试图使用电脑解决一个自己解决不了的数学问题,请重新阅 ...

最新文章

  1. HTML DOM Table 对象
  2. Apache ZooKeeper - 集群中 Follow 的作用_非事务请求的处理与 Leader 的选举分析
  3. 全国计算机二级准考证贵州,贵州计算机二级考试准考证打印时间
  4. java-第九章-编写程序,打印如图案,要求图案的行数由用户输入.
  5. Sentinel隔离和降级
  6. .NET 动态脚本语言Script.NET系列文章汇总 非常精彩的应用举例
  7. 项目管理随感-项目管理是什么?
  8. Oracle笔记 十一、PL/SQL函数和触发器
  9. RabbitMQ学习之spring-amqp的重要类的认识
  10. python学习总结----异常处理
  11. 双一流2020年调整时间_“双一流”调整名单预测,985大学两升一降,两校退出名校阵营...
  12. vs2010断点调试详细教程
  13. 传送的谷歌应用程序打不开_如何使用Google Home将内容传送到您的Chromecast
  14. hive执行出现问题:Ended Job = job_1667594872527_3123 with errors Error during job, obtaining debugging info
  15. BeagleBone Black 从零到一 (2 MLO、U-Boot)
  16. uni-app 背景图片处理
  17. excel 错位插入_excel表格错位怎么解决?excel数据错位
  18. HDU 6130 Kolakoski
  19. 重磅榜单 | 国内云服务企业估值50强,【友盟+】位列其中。
  20. 教师资格证面试 计算机应用,2019下半年初中信息技术教师资格证面试真题及答案汇总...

热门文章

  1. UE4 键盘控制开关灯
  2. 什么是1u服务器;服务器中的u是什么意思
  3. Graph Convolutional Tracking
  4. 2011 imac 固态_老款iMac 安装SSD固态硬盘
  5. 音乐APP首页框架搭建
  6. javascript案例26——求100以内所有7倍数之和
  7. python所有字母大写_在python中将所有字母改为大写
  8. 萌新,C++、Java、Python 选择哪个好?
  9. 使用app管理家庭路由器(TP-Link,水星,腾达等)
  10. 私有云服务器同步盘的定义及优势详解!