在CentOS上优化Node.js网络连接可从系统配置、应用代码、工具使用等方面入手,具体如下:
-
系统配置优化
- 调整文件描述符限制
临时设置:ulimit -n 65535
永久设置:编辑/etc/security/limits.conf,添加* soft nofile 65535和* hard nofile 65535。 - 优化内核参数
编辑/etc/sysctl.conf,添加以下参数并执行sysctl -p:net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 ```。
- 调整文件描述符限制
-
Node.js应用优化
- 启用HTTP/2
使用http2模块创建服务器,支持多路复用和头部压缩,提升传输效率。 - 使用集群模式
通过cluster模块利用多核CPU,创建多个工作进程处理请求,示例代码:const cluster = require('cluster'); if (cluster.isMaster) { for (let i = 0; i < require('os').cpus().length; i++) cluster.fork(); } else { require('./app'); // 启动应用 } ```。 - 配置连接池
对数据库、HTTP请求等使用连接池(如pg-pool、http.Agent),限制最大连接数并复用连接,避免频繁创建销毁。 - 异步处理与缓存
用async/await避免阻塞事件循环,对高频数据使用node-cache或Redis缓存,减少重复请求。
- 启用HTTP/2
-
网络与架构优化
- 反向代理与负载均衡
使用Nginx代理静态文件、处理SSL/TLS,并通过负载均衡分发请求到多个Node.js实例。 - 启用Gzip压缩
在Nginx或Express中启用Gzip,压缩响应数据减少传输时间。 - 监控与调优
使用Prometheus+Grafana监控网络性能,通过Chrome DevTools分析请求耗时,定位瓶颈。
- 反向代理与负载均衡
-
其他建议
- 定期更新Node.js及依赖包,修复安全漏洞。
- 对静态资源使用CDN加速,减轻服务器压力。
参考来源: