Nodejs调PHP频繁断连_加心跳检测保活连接【方法】-php教程

Node.js调用PHP接口频繁断连的根本原因是中间设备主动回收空闲HTTP连接,需通过http.Agent配置keepAliveTimeout≥后端超时、PHP禁用输出缓冲、Nginx启用HTTP/1.1并清除Connection头来协同解决。

Node.js 调用 PHP 接口频繁断连的根本原因

不是 Node.js 或 PHP 单方面的问题,而是 HTTP 连接在空闲时被中间设备(如 Nginx、负载均衡器、云服务商 SLB、甚至运营商网关)主动回收。默认情况下,keep-alive 连接超时往往只有 60–75 秒,而 Node.js 的 http.Agent 默认 keepAliveTimeout 是 5000ms,远低于后端实际保活窗口,导致复用连接时突然收到 ECONNRESET 或 socket hang up。

用 http.Agent 配置长连接 + 心跳参数

必须显式创建并复用 http.Agent 实例,不能依赖默认 agent;关键参数要对齐后端(尤其是 Nginx 的 keepalive_timeout):

  • keepAlive: true — 启用复用
  • keepAliveMsecs: 30000 — 每 30 秒发一次 TCP keepalive probe(OS 层,需系统支持)
  • maxSockets: 50 — 避免连接数爆炸,按压测结果调整
  • timeout: 10000 — 请求级超时,和心跳无关,但影响失败感知速度
  • keepAliveTimeout: 65000 — 必须 ≥ 后端 keepalive_timeout(比如 Nginx 设了 65s,这里至少设 65000)

示例:

const http = require('http');
const agent = new http.Agent({
  keepAlive: true,
  keepAliveMsecs: 30000,
  maxSockets: 50,
  timeout: 10000,
  keepAliveTimeout: 65000
});

// 所有请求必须传入 agent
http.get('http://php-api.example.com/status', { agent }, (res) => {
  // ...
});

PHP 端必须关闭输出缓冲 & 显式 flush

Node.js 发起的 keep-alive 请求,如果 PHP 响应未及时写出或被缓冲,连接会卡住,最终被中间层断开。常见陷阱:

立即学习“PHP免费学习笔记(深入)”;

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » Nodejs调PHP频繁断连_加心跳检测保活连接【方法】-php教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3997394+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3997395+
  • 本周更新: 0+
  • 最后更新: 2026-03-16