nodejs并发执行ping命令qps没有想象中的高
发布于 3 年前 作者 GuangGuo 3579 次浏览 来自 问答

使用 express 和 exec, 每接收到一个 get 请求就执行一次 ping -c 2 www.cnode.com, 然后返回结果

var express = require('express');
var app = express();
var exec = require('child_process').exec;

app.get("/", function (req, res) {
	exec("ping -c 2 www.cnode.com", function (err, stdout, stderr) {
		if(err) throw err;

		res.send(stdout);
	});
});

var server = app.listen(5000);

执行ab测试 ab -c 5 -n 5 http://127.0.0.1:5000/, qps 只有3.89.

Total transferred:      2705 bytes
HTML transferred:       1720 bytes
Requests per second:    3.89 [#/sec] (mean)
Time per request:       1285.671 [ms] (mean)
Time per request:       257.134 [ms] (mean, across all concurrent requests)
Transfer rate:          2.05 [Kbytes/sec] received

裸测 res.send('hello world'), qps 能接近300. 假设有一个应用场景是, 客户端提供 ip 或 url, 然后服务器器端执行 ping 命令并将结果返回. 3.89的 qps 显然远远不够看. 请各位大神指教, 我错在哪里, 以及有没有好的方法.

4 回复

exec 是一个重型的 api .

@yjhjstz 有啥好办法没?

@yjhjstz thx, 我看看net-ping是怎么写的吧

回到顶部