golang中的TCPListener:当连接数超过60/260时发生错误

问题描述 投票:0回答:1

我正在构建TCP代理:clientproxyVertica我有一个net.TCPListener,它通过AcceptTCP()接收传入请求并创建连接,然后通过net.DialTCP("tcp", nil, raddr)进行到目标套接字的连接。看起来像一座桥。默认代理模型。首先,在第一个版本中,我遇到了麻烦:如果我有59个并行传入请求,那么一切都很好。但是,如果我再增加一个(60),我会遇到麻烦:1-59连接正常,但60和更新的连接是错误的。我无法正确捕获错误。看起来有些插座意外关闭其次,我尝试为侦听器设置队列。它对我有很大帮助:但是,如果我有超过258个请求,我将再次出错。

我的问题:net程序包中的连接数是否有限制?可能是系统限制吗?

有关外部信息:Vertica在docker容器中运行,硬件/系统:macbook,vertica限制连接池:5,但池逻辑已实现到代理中。我还尝试了在没有池逻辑的情况下设置“原始”代理的原因(这就是为什么我为侦听器设置队列的原因:我不能超过Vertica用户池的阈值),结果是258个请求。

UPDATED:(05.04.2020)

看起来是系统限制错误。我在任何地方都提到我试图在一台PC上运行整个系统吗?因此,我所拥有的:
  • 300个并行处理程序作为请求(通过多处理来制造。池Python)(300个套接字)
  • 创建300个连接的监听器(一次更多300个套接字)
  • 以及一系列快速创建/关闭套接字代理深度(根据队列和Vertica池)
  • 我现在所拥有的:

  • [300 python请求从我本地网络中的另一台PC发出(在Windows上)
  • 代理正常工作
  • 但是我在Windows PC上遇到几个错误,这些错误创建了对代理的请求。诸如“交换文件”中的内存不足之类的错误。
  • 我仍然需要对代理进行一些压力测试。为交换文件添加更少的内存并不能解决Windows PC上的问题。如有任何建议和想法,我将不胜感激。谢谢!

[我正在构建TCP代理:客户端代理Vertica,我有一个net.TCPListener,它通过AcceptTCP()接收传入的请求并创建连接,然后建立到目标的连接...

go connection connection-pooling pool vertica
1个回答
0
投票

代理如何连接到Vertica?默认情况下,最多一次可以将50个普通的普通用户连接到一个Vertica节点。超级用户“ dbadmin”除此以外始终具有5个连接。

© www.soinside.com 2019 - 2024. All rights reserved.