当我发送Google Analytics事件而不等待响应时,我意外地发现了问题,所以我在这里构建了示例代码:https://github.com/tanapoln/node_perf_test
代码非常简单,只有两个端点,发送OK作为响应,除了一个缓慢的端点将pageview事件触发到GA (使用HTTP请求),如下所示:
let express = require('express')
let ua = require('universal-analytics')
let app = express()
let visitor = ua('UA-34321454-1', 'user1', {strictCidFormat: false, https: false});
app.get('/fast', function(req ,res) {
res.send('OK')
})
app.get('/slow', function(req, res) {
//This line will simply fire HTTP request to Google Analytics
visitor.pageview('/slow').send()
res.send('OK')
})
app.listen(3000, function() {
console.log("Server started at port 3000")
})在对这两个端点进行基准测试时,您可以在此处看到结果:
Running 10s test @ http://localhost:3000/fast
10 threads and 500 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 103.83ms 59.20ms 698.91ms 85.15%
Req/Sec 201.36 113.56 750.00 79.63%
19531 requests in 10.06s, 3.73MB read
Socket errors: connect 0, read 659, write 0, timeout 0
Requests/sec: 1941.10
Transfer/sec: 379.12KB
Running 10s test @ http://localhost:3000/slow
10 threads and 500 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 407.06ms 228.33ms 1.23s 74.15%
Req/Sec 37.18 29.17 136.00 70.59%
2847 requests in 10.09s, 556.05KB read
Socket errors: connect 0, read 2900, write 1, timeout 0
Requests/sec: 282.10
Transfer/sec: 55.10KB每秒请求数大幅下降,我不知道原因。
请帮帮忙。
发布于 2017-01-29 23:47:51
我认为问题不是存在于Node.js中,我也尝试过另一种语言(在我的例子中是Go),我发现了同样的问题和同样的性能限制。
这远远超出了我目前的知识范围。我猜这个问题存在于linux/unix TCP堆栈内部,甚至在更低的级别上。
我会结束这篇文章,做更多的研究。如果我遇到了障碍,我会再次发布另一个问题。
谢谢大家。
https://stackoverflow.com/questions/41810641
复制相似问题