繁体   English   中英

ArangoDB无法连接

[英]ArangoDB Could not connect

arangod运行了一段时间没有任何问题,但是在某些时候无法建立更多连接。 aranogsh然后显示以下错误消息:

错误消息'无法连接到'tcp://127.0.0.1:8529''connect()失败,出现#99-无法分配请求的地址''

在日志文件中,arangod仍会写入更多跟踪信息。

重新启动aranogd后,它将再次正常运行,直到问题突然再次发生。

为什么会这样呢?

由于这个问题是按时间回答的,因此我将使用此回答来详细说明如何深入研究这种情况,并对要查找的操作系统参数进行有价值的分析。 我将基于linux目标。

首先,我们需要使用root用户身份使用netstat工具找出当前发生的情况(我们仅关心tcp端口):

netstat -alnpt
Proto Recv-Q Send-Q Local Address     Foreign Address    State       PID/Program name
...
tcp        0      0 0.0.0.0:8529      0.0.0.0:*          LISTEN      3478/arangod
tcp        0      0 127.0.0.1:45218   127.0.0.1:8529     ESTABLISHED 6902/arangosh
tcp        1      0 127.0.0.1:46985   127.0.0.1:8529     CLOSE_WAIT  485/arangosh

我们将概述3个可能的价值组:

  • LISTEN :这些是向远程端提供tcp服务的守护进程,在本例中为带有服务器套接字的arangod进程。 它在系统的所有可用ipv4地址( 0.0.0.0 )上绑定端口8529 ,并接受来自任何远程位置的连接( 0.0.0.0:*
  • ESTABLISHED :在这种情况下,这是arangosharangod之间的活动tcp连接; Arangosh的客户端端口( 45218 )在较高范围内,连接端口8529上的arangod。
  • CLOSE_WAIT :这是处于终止状态的连接。 拥有它们是正常的。 操作系统的TCP堆栈使它们保持一段时间,以了解在何处分类可能已发送但未及时到达的杂散TCP程序包。

如您所见,TCP端口是16位无符号整数,范围从065535 服务器套接字从低端开始,大多数操作系统要求进程以root用户身份运行,以绑定低于1024的端口。客户端套接字从高端开始,范围一直到客户端的指定限制。 由于多个客户端可以连接一台服务器,因此服务器端口范围似乎很窄,但通常客户端端口会磨损。 如果客户端经常关闭并重新打开连接,您可能会看到许多套接字处于CLOSE_WAIT状态,这是网络上的许多讨论提示,这些都是系统最终资源不足的症状。 通常,解决此问题的方法是通过keepalive功能重新使用现有连接。

正如solaris ndd命令详细说明了它可能会修改哪些参数,从而在solaris内核中带来哪些后果,其中解释的术语是tcp套接字相当通用的,并且可以通过其他方式在许多其他操作系统上找到; 在Linux中-我们通过/proc/sys/net -filesystem着重介绍。

有一些有价值的开关:

  • ipv4/ip_local_port_range这是本地套接字的范围。 您可以尝试缩小它的范围,并使用arangob --keep-alive false来探索如果系统用尽这些错误的情况。
  • time wait (通常简称为tw )是控制TCP-Stack在CLOSE_WAIT状态下已关闭的套接字应执行的操作的部分。 Linux内核可以在这里发挥作用-它可以立即将处于该状态的连接重新用于新连接。 文森特·伯纳特(Vincent Bernat) 很好地解释了要拧的螺丝以及内核中不同的参数的含义。

因此,一旦您决定更改/proc某些值以使主机更好地扩展到给定的情况,就需要使它们重新启动保持持久性-因为/ proc易失,并且在重新启动时不会记住值。

因此,大多数linux系统都提供/etc/sysctl.[d|conf]文件。 它将proc文件系统中的斜杠映射/proc/sys/net/ipv4/tcp_tw_reuse ,因此/proc/sys/net/ipv4/tcp_tw_reuse将转换为net.ipv4.tcp_tw_reuse

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM