【发布时间】:2018-02-23 13:36:30
【问题描述】:
更新:用托管在 VPS (Vultr) 上的网络服务器的结果回答了问题
我将它与 NodeJS/Express 服务器进行了比较以达到比较的目的。
我做错了什么?
转到服务器:
package main
import "github.com/gin-gonic/gin"
func main() {
gin.SetMode(gin.ReleaseMode)
router := gin.Default()
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
router.Run("0.0.0.0:9999")
}
快递服务器:
const express = require('express')
const app = express()
app.get('/ping', (req, res) => res.send({ pong: 'pong' }))
app.listen(9999, () => console.log('Example app listening on port 9999!'))
Test
工具是Vegeta
echo "GET http://localhost:9999/ping" | vegeta attack -rate=500 -duration=10s | vegeta report
Duration: 10s
Requests: 500 per s
Results
Go/Gin 的平均响应时间:13000ms
Node/Express 的平均响应时间:24ms
【问题讨论】:
-
用细节更新了问题
-
@DavidAlsh 我在 ab -n 10000 -c 10 下运行了你的 go 代码,得到了 8550 个请求/秒,最大服务时间为 16 毫秒。检查你是如何使用 vegeta 的。
-
@DavidAlsh:系统配置和测试方法在基准测试中比您提供的玩具代码更重要。
13000ms的响应时间表示有问题,因此您需要从分析整个系统开始。 -
@JonahB:那一定是系统。我已经更新了我对 Vegeta 的使用。我想我会在 VPS 上尝试测试以将我的系统排除为变量
-
用 VPS 测试的结果结束了这个问题