Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Node.js 使用--sysctl with Docker run保持连接活动_Node.js_Docker_Salesforce_Cometd - Fatal编程技术网

Node.js 使用--sysctl with Docker run保持连接活动

Node.js 使用--sysctl with Docker run保持连接活动,node.js,docker,salesforce,cometd,Node.js,Docker,Salesforce,Cometd,我当前有一个运行节点服务的容器。其中运行的代码使用Comed创建对Salesforce变更数据捕获事件总线的订阅。这一直运行良好,但一段时间后服务将停止接收来自Salesforce的事件 我认为这是因为alpine Linux容器可能会在一段时间后没有收到数据后将连接标记为断开。我已经验证了Comet库正在创建一个连接,并将keep alive设置为true 现在,我正试图通过使用以下命令运行容器来增加保持活动时间: docker run --sysctl net.ipv4.tcp_keepal

我当前有一个运行节点服务的容器。其中运行的代码使用Comed创建对Salesforce变更数据捕获事件总线的订阅。这一直运行良好,但一段时间后服务将停止接收来自Salesforce的事件

我认为这是因为alpine Linux容器可能会在一段时间后没有收到数据后将连接标记为断开。我已经验证了Comet库正在创建一个连接,并将keep alive设置为true

现在,我正试图通过使用以下命令运行容器来增加保持活动时间:

docker run --sysctl net.ipv4.tcp_keepalive_time=10800 --sysctl net.ipv4.tcp_keepalive_intvl=60 --sysctl net.ipv4.tcp_keepalive_probes=20  -p 80:3000 <imageid>
我想我要问的是,这是否是运行docker容器的正确方法,以便sysctl使用我传入的设置运行


我是docker的新手,所以,我肯定我做了一些毫无意义的事情。谢谢您的建议。

您不应该配置TCP keepalive(我将保留默认设置),因为CometD实现了一个应用程序级心跳信号,它将保持连接打开,即使在没有发送或接收消息的情况下也不会空闲。相反,您应该查看是谁正在关闭连接(客户端还是服务器?)以及原因(最后一条Comed消息可能包含有关错误的其他信息)。我还将研究SalesForce的身份验证-如果您尝试重新连接,请确保它工作正常。谢谢!当连接失败时,我没有看到任何错误。谢谢你的建议。这给了我一个很好的方向。非常感谢。您不应该配置TCP keepalive(我将保留默认设置),因为CometD实现了一个应用程序级心跳信号,它将保持连接打开,即使在没有发送或接收消息的情况下也不会空闲。相反,您应该查看是谁正在关闭连接(客户端还是服务器?)以及原因(最后一条Comed消息可能包含有关错误的其他信息)。我还将研究SalesForce的身份验证-如果您尝试重新连接,请确保它工作正常。谢谢!当连接失败时,我没有看到任何错误。谢谢你的建议。这给了我一个很好的方向。非常感谢。
net.ipv4.tcp_keepalive_time=10800 
This means that the keepalive routines wait for three hours (1080 secs) 
before sending the first keepalive probe

net.ipv4.tcp_keepalive_intvl=60
Resend the prob every 60 seconds

net.ipv4.tcp_keepalive_probes=20
If no ACK response is received for 20 consecutive times, the connection is 
marked as broken.