首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js:为什么触发请求并忘记它会导致大量的性能下降

Node.js:为什么触发请求并忘记它会导致大量的性能下降
EN

Stack Overflow用户
提问于 2017-01-24 00:07:38
回答 1查看 45关注 0票数 0

当我发送Google Analytics事件而不等待响应时,我意外地发现了问题,所以我在这里构建了示例代码:https://github.com/tanapoln/node_perf_test

代码非常简单,只有两个端点,发送OK作为响应,除了一个缓慢的端点将pageview事件触发到GA (使用HTTP请求),如下所示:

代码语言:javascript
复制
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")
})

在对这两个端点进行基准测试时,您可以在此处看到结果:

代码语言:javascript
复制
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

每秒请求数大幅下降,我不知道原因。

请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2017-01-29 23:47:51

我认为问题不是存在于Node.js中,我也尝试过另一种语言(在我的例子中是Go),我发现了同样的问题和同样的性能限制。

这远远超出了我目前的知识范围。我猜这个问题存在于linux/unix TCP堆栈内部,甚至在更低的级别上。

我会结束这篇文章,做更多的研究。如果我遇到了障碍,我会再次发布另一个问题。

谢谢大家。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41810641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档