nodejs并发执行ping命令qps没有想象中的高
使用 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 显然远远不够看. 请各位大神指教, 我错在哪里, 以及有没有好的方法.