无锡企业网站建设报价,互联网备案服务平台,怎样建设智能网站,如何制作公司宣传片在基于spring-boot开发过程尤其是上线后#xff0c;经常出现网络相关的错误#xff0c;令人难以琢磨和下手#xff0c;所以就spring-boot使用过程中可能碰到的网络相关问题进行分析#xff0c;结合网络转包、日志报错和前端输出#xff0c;针对网络连接超时、连接被拒绝、…在基于spring-boot开发过程尤其是上线后经常出现网络相关的错误令人难以琢磨和下手所以就spring-boot使用过程中可能碰到的网络相关问题进行分析结合网络转包、日志报错和前端输出针对网络连接超时、连接被拒绝、读超时等异常进行分析有助于理解发生问题的根本原因并快速定位和解决问题。
一、前端直接访问服务
1服务地址不通
当使用Chrome访问服务的地址不存在时Chrome会使用三个不同的源端口发送SYN报文并且使用的规避算法连续发送4次重连请求。就是大约1秒后第一次重发距离重发第一次2秒后第二次重发距离重发第二次4秒后第三次重发具体重发第三次8秒后进行第4次重发因为均未收到应答浏览器判断连接不能建立所以会显示如下信息 当使用Postman访问服务地址不存在时用一个源端口连续发起SYN请求针对每个SYN请求按照以上算法连续发送5次均未收到确认时也就是10次请求均无应答在控制台显示如下信息 2服务地址通但端口不存在
使用Chrome时连续发起两次SYN请求服务端以RST应答针对每个SYN又进行了4次重传Postman最终展示连接被拒绝在控制台输出如下 使用Postman时会大约每500毫秒发送一波SYN请求每一波包括相隔几毫秒的两个SYN请求共5波10个SYN请求服务端以RST应答Postman最终展示连接被拒绝在控制台输出如下 3服务正常但请求路径错误
使用浏览器访问时服务端返回HTML格式的错误说明具体示例如下 使用Postman访问时服务端返回json格式的错误说明具体示例如下 4连接池耗尽 使用Chrome或Postman请求服务时如果服务端连接耗尽Chrome和Postman将一直等待直到得到连接并返回结果
5服务响应慢
使用Chrome或Postman请求服务时缺省情况下永不超时所以会一直等待直到服务返回结果。
二、服务间调用-无超时
以下的测试基于浏览器或Postman访问A服务A服务又调用B服务并且均基于springbootRestTemplate并且RestTemplate未设置超时。
1B服务地址不通 A服务在微秒级别内连续发送两次连接请求后面每个请求按照规避算法重传了4次然后A服务抛出连接超时异常如下图所示 由于该异常未被捕捉所以该异常返回到前端。前端显示的出错信息就是上面标红的内容。
Postman调用结果 Chrome调用结果 2B服务端口不存在 A服务在微秒级别内连续发送两次连接请求后面每个请求按照规避算法重传了4次对于每个请求B服务均以RST应答A服务抛出拒绝连接异常如下图所示 由于该异常未被捕捉所以该异常返回到前端前端显示的出错信息就是上面标红的内容。
Postman调用结果 Chrome调用结果 3B服务连接池满
B服务连接池满时A服务调用B服务去不到连接将无限期等待直到取到连接后再发送请求在前端、A服务和B服务均不报错。
三、服务间调用-有超时
以下的测试基于浏览器或Postman访问A服务A服务又调用B服务并且均基于springbootRestTemplate并且RestTemplate设置超时时间为5秒。
1B服务地址不通 通过前端调用A服务A服务调用B服务时相差6微秒连续发送两个SYN请求然后针对这两个SYN请求又进行了两次重传因为超时时间到所以A服务抛出连接超时异常具体输出如下 因为A服务并未捕捉该异常所以直接返回到前端。
使用Postman时输出信息如下 使用chrome时输出信息如下 2B服务地址通到端口不存在
通过前端调用A服务A服务调用B服务时相差6微秒连续发送两个SYN请求然后针对这两个SYN请求又进行了四次重传然后A服务抛出拒绝连接异常具体输出如下 由于异常未捕捉所以直接返回到前端。
Post请求时出错信息如下 浏览器请求时出错信息如下 3B服务正常但响应时间超出5秒
前端调用A服务时A服务与B服务经过3次握手建立连接后发送HTTP请求并做了一次重传然后超时时间到A服务发送FIN中断连接此时A服务抛出读耗时异常 Postman调用时返回结果如下图所示 使用Chrome时返回结果如下图所示
4B服务连接被耗尽
A服务请求B服务因B服务连接池耗尽抛出读超时异常错误输出如下 因异常未捕捉所以返回前端。
Chrome出错信息如下 Postman出错信息如下 四、通过网关调用服务
使用Springcloud Gateway作为网关。
1下游服务地址不通
下游服务地址不通时网关连续进行五次连接后报连接超时错误报错信息如下 网关并未把错误原封不动返回前端而是做了处理Postman端报错信息如下 2下游服务端口不存在
下游服务端口不存在时网关连续多次SYN请求都收到RST报文抛出拒绝连接异常报错信息如下 网关并未把信息原封不动返回前端而是错了处理出错内容与地址不通相同具体如下: 3下游服务处理太慢 下游服务处理很慢时SpringCloud gateway一直等待处理完成后把结果返回给前端
4下游服务连接耗尽
下游服务连接耗尽时SpringCloud gateway一直等待处理完成后把结果返回给前端
5下游服务超时
下游服务超时有两种情况一种是下游服务调用其下游服务地址不通一种是下游服务调用其下游服务时下游服务处理太慢。
针对第一种情况下游服务抛出连接超时错误具体如下图所示 如果未捕捉异常则下游服务把异常信息返回到网关由网关返回前端前端报错信息如下 针对第二种情况下游服务抛出读超时错误具体如下图所示 如果下游服务未捕捉异常则把异常消息发挥网关由网关返回前端前端报错信息如下