You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js服务器遇错误请求时挂起冻结的原因排查

问题分析与解决方案

兄弟,我一眼就揪出你代码里的问题了——所有错误/异常路径都没正确给客户端返回响应,导致HTTP请求一直处于挂起状态,积累多了服务器自然就被堵得冻结了。咱们一条条拆解:

核心问题点

  • 缺失sigs参数时无响应:如果请求没带sigs,你的代码直接啥也不做,客户端会一直等着服务器给结果,对应的HTTP连接也不会释放,多来几个这种请求,服务器的连接池就满了。
  • JSON.parse未做异常捕获:如果req.body.packedTr不是合法的JSON字符串,JSON.parse会直接抛出异常,整个请求处理逻辑崩溃,同样没给客户端任何反馈,连接直接挂死。
  • catch块未结束响应:就算xmf.pushTransaction调用失败,你只打印了错误日志,没给res发响应也没结束请求,客户端还是在傻等,连接一直占着资源。

修复后的代码

我把所有遗漏的响应处理都补上了,你直接用就行:

app.post('/pushtransaction', function(req, res) {
  console.log(req.body);
  console.log(5);

  // 先处理sigs不存在的情况,直接返回错误响应
  if (!req.body.sigs) {
    return res.status(400).send('Missing required parameter: sigs');
  }

  try {
    let sigver = xmf.modules.ecc.Signature.from(req.body.sigs).toString();
    let lasig = [sigver];
    console.log(req.body.packedTr);
    
    // 给JSON.parse加try-catch,处理非法JSON的情况
    let transi = JSON.parse(req.body.packedTr);
    let package = {
      compression: 'none',
      transaction: transi,
      signatures: lasig
    };
    console.log(package);

    // Pushes tx in correct format
    xmf.pushTransaction(package)
      .then(result => {
        console.log(result);
        res.send(result); // 成功返回结果
      })
      .catch(err => {
        console.log(err);
        res.status(500).send('Transaction push failed: ' + err.message); // 失败返回错误信息
      })
      .finally(() => {
        res.end(); // 不管成功失败,最后结束请求(Express的send后会自动end,这里是双重保障)
      });
  } catch (parseErr) {
    console.log('JSON parse error:', parseErr);
    res.status(400).send('Invalid packedTr parameter: ' + parseErr.message); // 处理JSON解析错误
  }
});

关键修复说明

  1. 新增了sigs参数不存在的判断,直接返回400错误响应,快速结束无效请求。
  2. 把涉及JSON.parse和Signature.from的逻辑包在try-catch里,捕获任何同步异常,返回对应的错误信息。
  3. 在pushTransaction的catch块里添加了res.status(500).send(),确保异步错误也能给客户端明确反馈。
  4. 加了finally块确保请求最终会被结束(不过Express里调用res.send()后会自动调用res.end(),这里是双重保障)。

以后写Express接口一定要记住:任何代码分支都必须确保给客户端返回响应,不然连接泄漏积累多了,服务器肯定会挂掉。

内容的提问来源于stack exchange,提问作者user9760741

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:54:21