Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Sockets vxworks 6.3活动插座在255处最大输出?_Sockets_Reset_Vxworks - Fatal编程技术网

Sockets vxworks 6.3活动插座在255处最大输出?

Sockets vxworks 6.3活动插座在255处最大输出?,sockets,reset,vxworks,Sockets,Reset,Vxworks,我有一个在vxworks 6.3上运行的LPD服务器。客户端应用程序(我无法控制)每隔十分之一秒向我发送一个LPQ查询。在235个请求之后,客户端在尝试连接时收到RST。一段时间后,设备将再次接受一些查询(大约300),直到它再次开始发送RST 我已经确认是TCP堆栈导致了RST。我注意到了一些事情 1) 如果我更改正在运行的其他应用程序的数量,我可以在某种程度上更改将接受的套接字数量。例如,我释放了4个套接字,从而将接受的数量从235更改为239。 2) 如果我向lpr(端口515)和另一个端

我有一个在vxworks 6.3上运行的LPD服务器。客户端应用程序(我无法控制)每隔十分之一秒向我发送一个LPQ查询。在235个请求之后,客户端在尝试连接时收到RST。一段时间后,设备将再次接受一些查询(大约300),直到它再次开始发送RST

我已经确认是TCP堆栈导致了RST。我注意到了一些事情

1) 如果我更改正在运行的其他应用程序的数量,我可以在某种程度上更改将接受的套接字数量。例如,我释放了4个套接字,从而将接受的数量从235更改为239。 2) 如果我向lpr(端口515)和另一个端口(例如,端口80)发送请求,则在RST开始发生之前接受的连接总数保持在235。 3) 等待的时间很多。
4) 我有一个模拟版的客户端。如果我将客户端的速度降低到每四分之一秒一个请求,服务器不会拒绝连接。 5) 如果减慢服务器的响应速度,则不会拒绝任何连接

因此,我的理论是,在给定的时间内,VxWorks可能会消耗一些共享资源(我的最大猜测是套接字句柄的总数)。我也猜这个数字最多是255

有人知道我如何让VxWorks接受更多的连接,并在关闭时让它们及时等待吗?我已经查看了内核配置,并更改了所有看起来有点像的值,但我无法更改数字

我们知道我们可以设置这么长的时间,但这不是一个可接受的解决方案。但是,这确实可以防止客户端连接被拒绝。我们还尝试更改SO_LINGER的超时值。这在VxWorks中似乎不受支持。不是开就是关

谢谢!
Gail

对我来说,听起来好像你在为每个LPQ查询建立一个新的连接,在查询完成后,你不会关闭连接。在我看来,正确的做法是接受一个TCP连接,然后使用它来获取所有LPQ查询,但是这可能需要客户端应用程序的MOD。为了避免对客户端进行mod,您应该在每次LPQ查询之后关闭TCP连接


此外,您可以通过调整#define NUM_FILES config.h(或configall.h或其中一个文件)来设置在vxworks中打开的FD的最大数量,但如果您有FD泄漏,这将推迟错误,您可能会这样做。

嗨,克里斯,谢谢您的建议。我们实际上没有泄漏;当我们完成连接时,所有连接都会关闭。插座将在…1分钟后离开等待时间。TCP堆栈保持套接字打开,等待延迟的网络流量。我确实尝试过更改NUM_文件,但这似乎没有改变行为。幸运的是,我们说服客户将他们的应用程序更改为查询频率较低,这使我们能够避免整个问题。