TCP套接字连接是否适合连续打开/关闭套接字


Is TCP socket connection good for continuous socket opening/closing

我正在做一个项目,需要每5分钟发送一次数据(不多,一次大约300B(+-100))。一边是一个带有apache2服务器的树莓派和一个额外的PHP脚本,该脚本用作TCP套接字服务器。

另一方面,有多个客户端,它们连接到TCP套接字服务器。连接由服务器建立,它们交换数据,然后关闭套接字。每个客户端每5分钟发生一次这种情况(因此,如果我有100个客户端,套接字将每分钟打开和关闭20次)。

这是处理这种联系的好方法吗?还是我应该以不同的方式来处理?PHP脚本好吗?

要么这样,要么连接每个客户端一次并保持连接。使用指定的数字,两者都是有效的选择,但套接字是一种资源,操作系统不能无限期地分配新的资源。因此,它将不得不重用它们,因此这种打开和关闭的方法可以很好地扩展,因为当前未使用的套接字可以回收。

另一方面,如果你的服务器运行apache2的唯一原因是运行一个只充当TCP套接字服务器的PHP脚本,那么我认为这不是最好的方法。您可能可以使用WebSockets(仍在使用PHP)并通过CLI运行PHP,而不需要运行apache2。

如果我没看错,你的远程客户端正在打开一个到PHP应用程序的TCP连接,该应用程序托管在运行树莓派2的Apache HTTP服务器上。客户端将每5分钟连接到服务器,并发送大约300字节(+/-100字节)的数据。所以,这是一个TCP连接每5秒打开一次。这对树莓派来说不算什么,除非它需要大量的CPU来处理你得到的300字节。

我不建议尝试保持网络连接5分钟(使用TCP保持活动和/或HTTP保持活动和(或)使用web套接字),因为负载太低,你会给系统带来更大的压力,试图保持100个连接的活动,而不是让它们每5分钟重新连接。