gpt4 book ai didi

mysql - 我们的服务器不能处理超过 20 个请求/秒

转载 作者:数据小太阳 更新时间:2023-10-29 03:45:43 26 4
gpt4 key购买 nike

因此,在经过 3 个月的努力开发并将公司 API 从 PHP 切换到 Go 之后,我发现我们的 Go 服务器每秒无法处理超过 20 个请求。

那么基本上我们的 API 是如何工作的:

  • 接受请求
  • 验证请求
  • 使用MYSQL从数据库中获取数据
  • 将数据放入 map
  • 以 JSON 格式将其发送回客户端

因此,在编写了大约 30 个 API 之后,我决定试一试,看看它在负载测试下的性能如何。

测试 1: ab -n 1 -c 1 http://localhost:8000/sales/report结果是 "Time per request: 72.623 [ms] (mean)"。

测试 2: ab -n 100 -c 100 http://localhost:8000/sales/report结果是“每个请求的时间:4548.155 [ms](平均值)”(没有 MYSQL 错误)。

在第二次测试中,这个数字是如何突然从 72.623 毫秒飙升到 4548 毫秒的?我们预计每天会有数千个请求,所以我需要在最终发布之前解决这个问题。当我看到这些数字时,我感到很惊讶;我简直不敢相信。我知道 GO 可以做得更好。

有关服务器和设置的基本信息:

  • 使用 GO 1.5
  • 16GB 内存
  • GOMAXPROCS 正在使用全部 8 个核心
  • db.SetMaxIdleConns(1000)
  • db.SetMaxOpenConns(1000)(同时确保我们使用的是连接)
  • 通过 unix socket 连接到 MYSQL
  • 系统在Ubuntu下运行

我们正在使用的外部库:

  • github.com/go-sql-driver/mysql

  • github.com/gorilla/mux

  • github.com/elgs/gosqljson

知道是什么原因造成的吗? .我看了一下这个post但是没有像我上面提到的那样工作,我从来没有遇到任何 MYSQL 错误。预先感谢您提供的任何帮助。

最佳答案

您的帖子没有足够的信息来说明为什么您的程序没有按照您的预期执行,但我认为这个问题本身就值得回答:

How did the number suddenly spike from 72.623 to 4548 ms in the second test?

在您的第一个测试中,您执行了一个请求 (-n 1)。在您的第二个测试中,您同时执行了 100 个请求(-c 100 -n 100)。

您提到您的程序与外部数据库通信,您的程序必须等待该资源响应。当您同时发送 1,000 个请求时,您了解数据库的性能吗?你没有提到这个。 Go 当然可以毫不费力地每秒处理数百个并发请求,但这取决于你在做什么以及你是如何做的。如果您的程序无法像收到请求那样快地完成请求,它们就会堆积起来,导致高延迟。

您告诉我们的那些测试都无助于了解您的服务器在“正常”情况下的表现——您说的是“每天数千个请求”(这不是很具体,但我会接受意思是“几秒钟”)。然后查看 -c 4 -n 1000 会更有趣,或者在更长的时间内运行服务器的东西,有许多并发请求,这更像你所期望的得到。

关于mysql - 我们的服务器不能处理超过 20 个请求/秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32291180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com