当前位置: 首页 > news >正文

Node.js 本地服务部署、常驻及调用完整笔记

本笔记记录 Node.js 服务的启动、常驻、跨域调用、QPS 限制处理、服务自检及日志管理方法,适合快速查阅和复用。

一、Node 服务启动与访问

  1. 启动服务
    node server.js

特点:直接启动,终端关闭服务会被销毁。

访问示例:

本地访问:http://localhost:3000/ocr

局域网访问:http://127.0.0.1:3000/ocr 或 http://0.0.0.0:3000/ocr

公网访问:http://公网IP:3000/ocr(需放通防火墙端口)

  1. 常见启动问题
    错误 原因 解决方案
    net::ERR_CONNECTION_REFUSED 服务未启动或访问地址错误 确认 Node 服务已启动,访问地址与监听地址一致
    EADDRINUSE 端口被占用 修改端口或结束占用进程 lsof -i:3000 / kill

二、跨域调用与 QPS 限制处理

  1. 前端调用 Node 服务示例
async function ocrImage(file, retryCount = 0) {const base64 = await convertImageToBase64(file);try {const res = await fetch("http://117.72.99.159:3000/ocr", {method: "POST",headers: { "Content-Type": "application/json" },body: JSON.stringify({ imageBase64: base64 })});const data = await res.json();// QPS限制重试if (data.error_code === 18 || /qps|limit/i.test(data.error_msg)) {if (retryCount < 5) {const waitTime = 5000 * (retryCount + 1); // 5秒、10秒、15秒...console.log(`QPS限制,等待 ${waitTime/1000} 秒重试 (${retryCount + 1}/5)`);await sleep(waitTime);return await ocrImage(file, retryCount + 1);} else {return { text: "QPS限制,请稍后重试", confidence: 0 };}}const text = data.words_result?.map(w => w.words).join(" ") || "";const confidence = data.words_result?.length > 0? data.words_result.reduce((sum, w) => sum + (w.probability || 0.8), 0) / data.words_result.length: 0;return { text, confidence: Math.round(confidence * 100) };} catch (e) {console.error("Fetch请求失败:", e);}
}

注意:

访问 localhost 仅本机可访问。

访问公网 IP 可实现跨设备访问。

对接口有 QPS 限制需增加重试机制。

三、Node 服务常驻运行

1. 使用 nohup 后台运行

nohup node server.js > server.log 2>&1 &

  • nohup:忽略终端挂断信号,服务持续运行

  • server.log:标准输出写入日志

  • 2>&1:标准错误也写入日志

  • &:后台运行

2. 查看和管理进程
查看日志

tail -f server.log

查看 Node 后台进程

ps aux | grep node

停止服务

kill

3. 监听地址区别
地址含义访问范围
localhost/ 127.0.0.1本机回环仅本机访问
0.0.0.0监听所有网络接口局域网内可访问
公网 IP外网访问需开防火墙端口

四、服务自检与问题排查

  1. 自检脚本示例(Node 端)
const http = require('http');function checkService() {http.get('http://127.0.0.1:3000/test-token', res => {if(res.statusCode === 200){console.log('服务运行正常');} else {console.error('服务异常:', res.statusCode);}}).on('error', (e) => {console.error('服务未启动或连接失败:', e.message);});
}// 每5分钟自检一次
setInterval(checkService, 5 * 60 * 1000);
  1. 常见问题与解决
    问题 原因 解决方案
    服务断开 进程被意外杀死 使用 nohup 或 PM2 监控
    日志爆满 没有轮转机制 配合 logrotate 或 PM2 日志管理
    QPS限制 接口请求过快 增加指数退避重试,限制并发请求
    防火墙阻塞 公网访问失败 放通 3000 端口或使用 Nginx 反代

五、日志管理建议

日志输出到文件:

nohup node server.js > server.log 2>&1 &

实时查看:

tail -f server.log

日志轮转:

  • Linux 可用 logrotate 定期清理
  • PM2 内置日志管理功能,可自动分割和备份日志
  • 六、总结与优化建议

服务常驻:

  • nohup 可用,但日志需管理
  • 更推荐使用 PM2 或 Docker 做进程管理与自检

跨域访问:

  • 本机开发用 localhost 或 127.0.0.1
  • 局域网用 0.0.0.0
  • 公网部署需确保 IP、端口、防火墙正确配置

请求限制:

  • 对接口 QPS 限制做指数退避重试
  • 减少请求压力,提升服务稳定性

服务自检:

  • 定时请求自身健康检查接口
  • 异常时可结合脚本重启或告警
http://www.dtcms.com/a/434389.html

相关文章:

  • Java 工具类 Hutool、Guava 与 Apache Commons 的区别
  • 怎么创建网站挣钱济南产品网站建设外包
  • BEV query 式图片点云视觉特征融合
  • 操作系统应用开发(十二)RustDesk 用户服务器搭建——东方仙盟筑基期
  • 将若依(RuoYi)项目创建为私有Gitee仓库的完整步骤
  • 网站上的百度地图标注咋样做app开发制作专业吗
  • TCP 协议核心面试题 (附答案详解)
  • Spring Security 实战:彻底解决 CORS 跨域凭据问题与 WebSocket 连接失败
  • Tabby下载安装与连接服务器
  • Apache Beam入门教程:统一批流处理模型
  • 计算机毕业设计 基于Hadoop的信贷风险评估的数据可视化分析与预测系统 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 【QT常用技术讲解】QTablewidget单元格存储隐藏的数据
  • K8s学习笔记(九) job与cronjob
  • MATLAB线性代数函数完全指南
  • 关于单片机外设存储芯片的应用笔记(IIC驱动)
  • 梅州网站建设南宁网站 制作
  • 2015 年真题配套词汇单词笔记(考研真相)
  • 中国建设银行舟山分行网站网站构建的过程
  • python如何通过链接下载保存视频
  • K-Lite Mega/FULL Codec Pack(视频解码器)
  • SpringBoot+Vue医院预约挂号系统 附带详细运行指导视频
  • 85-dify案例分享-不用等 OpenAI 邀请,Dify+Sora2工作流实测:写实动漫视频随手做,插件+教程全送
  • GUI高级工程师面试题
  • 经典网站设计风格网站建设产品介绍
  • 基于单片机的人体心率、体温监测系统(论文+源码)
  • WinScp下载与安装
  • 普中stm32大Dap烧录流程
  • 宝安附近做网站公司网站做好了前端 后端怎么做
  • 新媒体营销h5制作网站中国水土保持生态建设网站
  • ubuntu 服务器(带NVLink)更新显卡驱动 (巨坑!!)