nodejs并发执行ping命令qps没有想象中的高 - CNode技术社区

nodejs并发执行ping命令qps没有想象中的高
发布于 10 年前 作者 GuangGuo 6242 次浏览 最后一次编辑是 9 年前 来自 问答

使用 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是怎么写的吧

回到顶部

AltStyle によって変換されたページ (->オリジナル) /