Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu Websocket连接卡在FIN_WAIT1 FIN_WAIT2状态_Ubuntu_Tcp_Websocket_Connection_Ulimit - Fatal编程技术网

Ubuntu Websocket连接卡在FIN_WAIT1 FIN_WAIT2状态

Ubuntu Websocket连接卡在FIN_WAIT1 FIN_WAIT2状态,ubuntu,tcp,websocket,connection,ulimit,Ubuntu,Tcp,Websocket,Connection,Ulimit,我正在尝试使用一个服务器,多个客户端需要使用该服务器打开websocket并发送数据。但是看起来很多客户端都无法建立连接 在服务器机器上,当我执行lsof或netstat-an时,除了处于已建立状态的连接之外,我看到许多连接都显示在状态FIN_WAIT1和FIN_WAIT2中。到目前为止,打开文件的ulimit是1024。 处于这两种状态的连接是否会被计入打开的文件列表中?如果是这样的话,1024个限制将很快耗尽 /proc/sys/net/ipv4/tcp\u orphan\u retries

我正在尝试使用一个服务器,多个客户端需要使用该服务器打开websocket并发送数据。但是看起来很多客户端都无法建立连接

在服务器机器上,当我执行
lsof
netstat-an
时,除了处于
已建立
状态的连接之外,我看到许多连接都显示在状态
FIN_WAIT1
FIN_WAIT2
中。到目前为止,打开文件的ulimit是1024。 处于这两种状态的连接是否会被计入打开的文件列表中?如果是这样的话,1024个限制将很快耗尽

/proc/sys/net/ipv4/tcp\u orphan\u retries
0
,似乎相当于
8

我曾参考过这个链接:

但我不太明白。 我在网上读到过这两种状态,我意识到它们是协议的一部分,但我更希望连接不要陷入无用的状态。
我能做到吗?我应该换一下座位吗?但这只意味着问题将在时间x+y而不是x发生。

任何时候,如果您看到Fin_等待状态或任何等待状态,我们通常将其称为1/2会话。TCP堆栈在请求和响应的顺序上遵循非常严格的协议。正是由于这些规则,它知道如何、何时以及通过发送重试来尝试恢复有多困难。在任何等待状态的实例中,堆栈都知道它在等待什么。只有两件事可以满足这个条件:1)某种适当的响应或2)超时

当然,最好的办法是得到适当的回应。应该努力找出为什么会有这么多等待。有时,这是由于不稳定的交换、路由或其他网络相关活动造成的。然而,这也可能是拒绝服务攻击的结果,因为他们不关心状态。在应用程序层释放必要资源的唯一方法是当应用程序重新获得控制时。TCP仅在1)工作流程正常或2)发生超时或其他异常情况时提供控制。例如,FINs和RST可以在任意时间无序发送。他们都被认为胜过任何其他州。请记住,并非所有客户端或主机的行为方式都与我们讨论的不同TCP堆栈实现方式相同

根据系统的不同,可以配置一些、许多或很少的TCP堆栈参数。Fin等待和RST等待的超时值都有可配置的参数。也许你可以调整这些来解决你的问题