基于 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)

看看别人的测试结果,好像这个挺慢的了,为什么呢?


1 回复

针对您提出的关于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能够处理高并发请求。如果您的测试结果不尽如人意,可能需要考虑以下优化措施:

  1. 使用最新的Node.js版本。
  2. 优化代码,减少阻塞操作。
  3. 使用集群和负载均衡来充分利用多核CPU。
  4. 合理使用缓存。
  5. 定期监控应用的性能,及时发现潜在问题。

综上所述,Node.js并不慢,关键在于如何优化和配置您的应用环境。希望这些建议对您有所帮助!

回到顶部