记一次net::ERR_CONNECTION_RESET报错排查

浏览器请求自己的服务,间歇性的出现net::ERR_CONNECTION_RESET
查看服务容器日志,未发现请求记录,说明此请求根本没有到后端。
由于我们使用的k8s部署容器,请求会首先到达ingress
那么查看ingress配置
发现ingress中配置有tls,用于实现https,不过配置未完全生效。
再根据postman反馈信息
在这里插入图片描述
判断,大概率是这个tls配置不正确导致请求被阻塞。
将ingress中的tls配置注释,再测,请求成功,畅通无阻。

可见ingress中配置tls,可能会导致请求阻塞,需留意。

### 报错原因 1. **网络问题**:网络连接不稳定、中断或者网络带宽不足,可能导致在文件上传过程中连接重置。例如,无线网络信号弱、路由器故障等情况都可能引发此类问题。 2. **服务器端问题** - **服务器资源耗尽**:服务器的内存、CPU 等资源不足,无法处理文件上传请求,可能会主动关闭连接。 - **服务器配置问题**:服务器的配置,如上传文件大小限制、连接超时时间等设置不合理,可能导致文件上传过程中连接被重置。例如,服务器设置的上传文件大小上限小于要上传的文件大小。 - **服务器代码异常**:自定义 filter 或其他服务器端代码中存在异常,导致程序崩溃或连接中断。例如,filter 中对请求进行处理时出现空指针异常,使服务器无法正常处理请求。 3. **客户端问题** - **浏览器问题**:浏览器的缓存、插件等可能影响文件上传。某些浏览器插件可能会干扰 ajax 请求,导致连接重置。 - **客户端代码问题**:客户端的 ajax 代码存在错误,如请求头设置不正确、请求超时时间过短等,可能导致连接异常。 ### 解决办法 1. **检查网络连接** - 确保网络稳定,尝试切换网络环境,如从无线网络切换到有线网络。 - 检查路由器等网络设备是否正常工作,重启路由器。 2. **调整服务器配置** - 增加服务器的资源,如升级服务器的内存、CPU 等。 - 调整服务器的上传文件大小限制和连接超时时间。以 Tomcat 为例,可以在 `server.xml` 文件中修改 `Connector` 元素的 `maxSwallowSize` 和 `connectionTimeout` 属性: ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxSwallowSize="-1"/> ``` 3. **排查服务器代码问题** - 检查自定义 filter 代码,确保没有异常。可以在 filter 中添加日志,录请求处理过程,便于排查问题。例如: ```java import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; public class CustomFilter implements Filter { private static final Logger LOGGER = Logger.getLogger(CustomFilter.class.getName()); @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { try { HttpServletRequest httpRequest = (HttpServletRequest) request; // 处理请求 chain.doFilter(request, response); } catch (Exception e) { LOGGER.log(Level.SEVERE, "Error in custom filter", e); throw e; } } @Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化操作 } @Override public void destroy() { // 销毁操作 } } ``` 4. **检查客户端代码** - 清除浏览器缓存和禁用不必要的插件,然后重新尝试上传文件。 - 检查 ajax 代码,确保请求头设置正确,请求超时时间合理。例如: ```javascript var xhr = new XMLHttpRequest(); xhr.open('POST', 'upload-url', true); xhr.setRequestHeader('Content-Type', 'multipart/form-data'); xhr.timeout = 60000; // 设置超时时间为 60 秒 xhr.ontimeout = function () { console.log('Request timed out'); }; xhr.onload = function () { if (xhr.status === 200) { console.log('File uploaded successfully'); } else { console.log('File upload failed'); } }; xhr.send(formData); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值