Node.js 服务在高并发下响应变慢,该怎么优化?

若惜 Dev 阅读 90

我用 Express 写了个 API 服务,平时没啥问题,但最近压测时发现并发一高(比如 1000+ 请求),响应时间就飙升,CPU 占用也飙到 90% 以上。我已经加了 cluster 模块用了多核,但效果不明显。

试过把一些同步操作改成异步,也用了 Redis 缓存热点数据,但还是扛不住。是不是哪里写得有问题?比如下面这个路由逻辑:

app.get('/api/data', async (req, res) => {
  const cached = await redis.get('hot_data');
  if (cached) return res.json(JSON.parse(cached));
  
  const data = await db.query('SELECT * FROM large_table WHERE status = ?', ['active']);
  await redis.setex('hot_data', 60, JSON.stringify(data));
  res.json(data);
});

有没有更有效的性能调优方向?比如流式处理、连接池配置,或者是不是该换 Fastify?

我来解答 赞 8 收藏
二维码
手机扫码查看
1 条解答
Code°利利
哎又是个深夜debug问题...看代码几个明显问题:

1. 数据库查询没limit,large_table全表扫肯定炸,改成:
await db.query('SELECT * FROM large_table WHERE status = ? LIMIT 100', ['active']);


2. Redis操作没错误处理,我之前这样搞的:
try {
await redis.setex('hot_data', 60, JSON.stringify(data));
} catch(e) {
console.log('redis挂了但接口继续', e);
}


3. 上pm2管理cluster比原生cluster稳,顺便把node版本升到最新LTS。

Fastify确实比Express快但别急着换,先把这些改了看看。要是还不行就得考虑分库分表了...困了先睡明天再说
点赞
2026-03-05 05:01