为了账号安全,请及时绑定邮箱和手机立即绑定

来自 Pod 的最大 http 请求数的阻止程序

来自 Pod 的最大 http 请求数的阻止程序

Go
弑天下 2022-08-01 16:49:19
我有一个Go应用程序,它部署到Kubernetes上的两个8核Pods实例。从中,我收到一个ID列表,而不是稍后通过将每个ID发送到POST端点来从另一个服务检索一些数据的ID。我正在使用有界并发模式来向此外部服务提供最大数量的模拟goroutines(以及请求)。我将并发限制设置为:sem := make(chan struct{}, MAX_GO_ROUTINES)通过这种设置,我开始通过增加MAX_GO_ROUTINES数字来玩弄它。我通常收到大约20000个id进行检查。因此,我通过设置100到20000之间的任何地方的MAX_GO_ROUTINES来玩。我注意到的一件事是,随着我越来越高,一些请求开始失败,并显示以下消息:从此外部服务重置连接。所以我的问题是:在这种情况下,阻碍因素是什么?具有 8 个核心和 4GB RAM 的服务器可以发送的并发 HTTP POST 请求的限制是多少?这是内存限制吗?或文件描述符限制?我收到的错误是来自我的服务器还是来自外部服务器?
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

在这种情况下,阻碍因素是什么?

正如评论中提到的:HTTP“连接重置”通常意味着

对等方意外关闭了连接。在发回响应之前,服务器似乎已断开了毫无戒心的 HTTP 客户端上的连接。这很可能是由于高负载。

大多数Web服务器(如nginx)都有一个队列,它们在等待服务时暂存连接。当队列超过某些限制时,连接可能会被丢弃并“重置”。因此,这很可能是您的上游服务饱和了(即您的应用程序发送的请求多于它可以服务的请求并使其队列过载)

具有 8 个核心和 4GB RAM 的服务器可以发送的并发 HTTP POST 请求的限制是多少?这是内存限制吗?或文件描述符限制?

全部:)在某些时候,您的特定工作负载将过载逻辑限制(如文件描述符)或“物理”限制(如内存)。不幸的是,真正了解哪些资源将被耗尽(以及您遇到哪些约束)的唯一方法是运行测试,分析并基准测试您的工作负载:(

我收到的错误是来自我的服务器还是来自外部服务器?

HTTP连接重置很可能是外部的,它表示连接对等体(上游服务)重置连接。


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信