Debian上Node.js网络编程的注意事项
Debian系统需调整内核参数以支持Node.js的高并发特性。首先,增加文件描述符限制(Node.js处理大量连接时需大量文件描述符),通过ulimit -n查看当前限制,临时修改为ulimit -n 65535,永久生效则编辑/etc/security/limits.conf添加* soft nofile 65535和* hard nofile 65535。其次,优化TCP参数(提升连接建立与传输效率),编辑/etc/sysctl.conf添加:net.core.somaxconn = 65535(最大连接队列长度)、net.ipv4.tcp_max_syn_backlog = 65535(SYN队列长度)、net.ipv4.tcp_tw_reuse = 1(复用TIME-WAIT连接)、net.ipv4.tcp_fin_timeout = 30(FIN等待超时时间),执行sudo sysctl -p使配置生效。
使用**NVM(Node Version Manager)**管理Node.js版本(避免系统自带版本过旧或冲突),通过curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash安装,然后nvm install node(最新LTS版本)或nvm install 18.15.0(指定版本)。对于依赖包,明确版本号(如npm install express@4.18.2),避免因依赖更新导致的兼容性问题;同时关注Node.js新特性(如顶级await),若项目需支持旧环境,需通过Babel等工具转译代码。
http2模块实现。例如,使用http2.createSecureServer创建安全服务器,配置SSL证书。compression中间件(Express/Koa均支持)对JSON、HTML等响应数据进行Gzip/Brotli压缩,减少传输体积。例如,app.use(compression())即可开启默认压缩。apicache或Redis缓存频繁访问的API响应(如app.get('/api/data', cache('5 minutes'), handler)),降低数据库压力,提升响应速度。https模块,启用HSTS(Strict-Transport-Security头)强制客户端使用HTTPS。例如,https.createServer({ key: fs.readFileSync('server.key'), cert: fs.readFileSync('server.cert') }, app).listen(443)。Helmet中间件设置HTTP安全头(如X-Frame-Options、X-Content-Type-Options),防止XSS、点击劫持等攻击;使用cors中间件限制跨域请求(origin: 'https://trusted-domain.com'),避免CSRF攻击;对用户输入使用Joi、Zod等库进行严格校验,防止SQL注入、XSS等注入攻击。dotenv库管理环境变量(如API密钥、数据库密码),避免将敏感信息硬编码在代码中;对敏感数据(如用户密码)使用crypto模块的PBKDF2、bcrypt等算法进行哈希处理(加盐+多次迭代)。cluster模块创建多个工作进程(数量等于CPU核心数),充分利用多核CPU资源。例如,if (cluster.isMaster) { for (let i = 0; i < numCPUs; i++) cluster.fork(); } else { http.createServer(handler).listen(8000); }。upstream node_servers { server localhost:3000; server localhost:3001; },然后proxy_pass http://node_servers。pm2进程管理器监控应用状态(pm2 start app.js --name my-app),查看CPU、内存使用情况及日志(pm2 monit);集成Prometheus+Grafana实现指标可视化(如QPS、错误率),使用Jaeger实现分布式追踪,快速定位性能瓶颈。