Node.js 服务在高并发下响应变慢,该怎么优化?
我用 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?
1. 数据库查询没limit,
large_table全表扫肯定炸,改成:2. Redis操作没错误处理,我之前这样搞的:
3. 上pm2管理cluster比原生cluster稳,顺便把node版本升到最新LTS。
Fastify确实比Express快但别急着换,先把这些改了看看。要是还不行就得考虑分库分表了...困了先睡明天再说