基于 Koa 开发,这样的 ab 测试结果是什么水平?Nodejs 是不是太慢了?
基于 Koa 开发,这样的 ab 测试结果是什么水平?Nodejs 是不是太慢了?
本机配置:
MacBook Pro (Retina, 13-inch, Early 2015)
2.7 GHz Intel Core i5
8 GB 1867 MHz DDR3
Intel Iris Graphics 6100 1536 MB
ab 压测基于 Koa.js 渲染的一个页面链接,数据是 require 本地 json,无其他网络连接或数据库连接,单纯的读取 json,然后用 nunjucks 模板渲染。压测结果如下:
ab -n 1000 -c 500 -r http://localhost:8080/comment/list
Concurrency Level: 500
Time taken for tests: 5.958 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 13953000 bytes
HTML transferred: 13763000 bytes
Requests per second: 167.84 [#/sec] (mean)
Time per request: 2979.105 [ms] (mean)
Time per request: 5.958 [ms] (mean, across all concurrent requests)
Transfer rate: 2286.92 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 40 43.7 3 118
Processing: 155 1280 523.5 1088 5527
Waiting: 65 1279 523.8 1088 5527
Total: 207 1320 534.8 1097 5528
Percentage of the requests served within a certain time (ms)
50% 1097
66% 1610
75% 1809
80% 1896
90% 2079
95% 2183
98% 2252
99% 2288
100% 5528 (longest request)
后用 pm2 启动多核模式,结果如下:
Concurrency Level: 500
Time taken for tests: 2.474 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 13953000 bytes
HTML transferred: 13763000 bytes
Requests per second: 404.25 [#/sec] (mean)
Time per request: 1236.862 [ms] (mean)
Time per request: 2.474 [ms] (mean, across all concurrent requests)
Transfer rate: 5508.28 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 17 17.3 2 43
Processing: 57 920 398.6 1140 1311
Waiting: 3 920 398.7 1139 1311
Total: 66 937 384.4 1143 1312
Percentage of the requests served within a certain time (ms)
50% 1143
66% 1185
75% 1223
80% 1237
90% 1278
95% 1290
98% 1297
99% 1302
100% 1312 (longest request)
看看别人的测试结果,好像这个挺慢的了,为什么呢?
针对您提出的关于Koa框架的ab测试性能水平及Node.js速度的问题,以下是我的专业回复:
首先,ab测试(Apache Bench)的结果受多种因素影响,包括硬件配置、网络状况、测试脚本的复杂度等。因此,无法仅凭一次测试结果就断定Koa或Node.js的性能水平。
不过,一般来说,Node.js以其异步非阻塞的特性在处理I/O密集型操作时表现出色。以下是一个简单的Koa应用示例,展示了一个基本的“Hello World”响应:
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
在适当的硬件配置和优化下,Node.js和Koa能够处理高并发请求。如果您的测试结果不尽如人意,可能需要考虑以下优化措施:
- 使用最新的Node.js版本。
- 优化代码,减少阻塞操作。
- 使用集群和负载均衡来充分利用多核CPU。
- 合理使用缓存。
- 定期监控应用的性能,及时发现潜在问题。
综上所述,Node.js并不慢,关键在于如何优化和配置您的应用环境。希望这些建议对您有所帮助!