Nodejs 问题排查

前言

用于记录在使用 node 过程中遇到的问题,并尝试寻求解决方案。

问题

问题1

问题描述

访问前端页面时,页面返回 502/504。查看日志后发现,在一些出现问题的时间节点,会出现以下日志:

javascript 复制代码
epoll_wait() reported that client prematurely closed connection while reading upstream

翻译为:

报告客户端在读取上游时过早关闭连接

其实前端常见的 502/504 一般是请求接口时存在超时或者网关挂掉了。但是当整个页面都崩溃,只展示 502/504 时,便是访问前端资源时的网关存在问题。

当然,这里的前端是广义上的前端,不仅是纯静态页面,还包括 Nodejs 服务、Spring MVC, PHP 等这种 web 服务。

而我们的服务基于 nodejs 服务,当定位到问题时是,ssr 端发送一个请求到后端时,请求超时了。而我们的 nginx 超时响应低于后端的超时时长,于是就存在node服务还在等后端返回,而 nginx 已经将请求关闭了。当存在足够数量的挂起请求后,就报错了。

解决方案

在 ssr 端设置超时,在远低于 nginx 超时的报错到达前,提前结束请求。

或者是调整 nginx 的超时时长。

问题总结

该问题存在于当初是为了解决首屏问题,而采用 ssr,然而超时便会导致服务挂起,便需要有一定的错误处理机制来处理。

相关推荐
小爷毛毛_卓寿杰14 小时前
给 Embedding 模型也加一块“游乐场“—— Xinference 是怎么把 vector 变成肉眼可见的体验的
前端
忆江南14 小时前
iOS 性能优化全面详解
前端
lichenyang45314 小时前
HAP / HAR / HSP 到底啥区别?顺带把「导入」那点疑惑讲清楚
前端
基德爆肝c语言14 小时前
MySQL表的操作
前端·数据库·mysql
米丘14 小时前
SSE (server-sent events)
javascript·网络协议
秃头网友小李14 小时前
前端难点:Element Plus 样式覆盖 —— :deep()、CSS 变量与滚动状态类名
前端·vue.js
the_answer14 小时前
XSS 与 CSRF 深度解析
前端
打呵欠的猫14 小时前
AI 生成的代码你敢直接上线吗?我总结出 3 条铁律
前端·ai编程
极速蜗牛14 小时前
我在 Taro 小程序项目里实践的 API First + AI 编程方式
前端·人工智能·后端
桜吹雪14 小时前
所有智能体架构(3):Planning(计划任务)
javascript·人工智能·langchain