在Ubuntu环境下排查Node.js应用的并发请求情况,其实比想象中要直接得多。不少开发者习惯直接盯着终端日志看,但面对大量请求时,总得有点“工具思维”才行。下面分享两种实战中很管用的方法,分别对应不同的场景需求。

方法一:借助pm2进程管理器
pm2 是Node.js生态里最常用的进程管理工具之一,它不仅负责进程守护,还能帮你轻松查看日志。如果还没装pm2,先全局安装一下:
sudo npm install pm2 -g
然后用pm2启动你的应用,比如:
pm2 start app.js --name my-app
接下来就是重点——查看并发请求数。pm2的日志输出里,我们可以配合 grep 和 wc 来过滤计数。假设你的应用日志里每条请求都包含“Request”关键字(具体关键字取决于你写的日志格式),那么一行命令就能搞定:
pm2 logs my-app | grep "Request" | wc -l
这条命令会实时统计当前日志流中间出现的请求数量。当然,如果你想要的是某个时间段内的并发峰值,可以结合 tail 或特定时间戳来进一步筛选。
方法二:在应用代码里加入请求日志中间件
如果不想依赖pm2的日志系统,或者需要更精细的请求记录,直接在应用里挂一个日志中间件是更灵活的做法。以Express为例,最流行的选择是 morgan。
先安装:
npm install morgan
然后在你应用入口文件里加上:
const express = require('express');
const morgan = require('morgan');
const app = express();
app.use(morgan('combined'));
// 你的路由和其他业务逻辑
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
这样,每个HTTP请求都会按照Apache combined格式输出到控制台。如果你想持续观察实时日志,用 tail -f 跟踪输出文件即可——前提是你把morgan的日志写入了文件:
tail -f /path/to/your/nodejs/app/logs/output.log
至于如何统计并发请求数,思路跟方法一一样:
grep "GET" /path/to/your/nodejs/app/logs/output.log | wc -l
这里统计的是HTTP GET请求的数量。如果你需要统计POST、PUT等其他方法,把 GET 换成对应关键字即可。需要注意的是,这种方法本质上统计的是“已记录的请求总数”,并非真正的瞬时并发数。想要精确的并发数,更专业的做法是用 prometheus 或 clinic.js 这类工具,但在日常调试中,上面两种方法已经足够快速定位问题了。
