繁体   English   中英

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

[英]Is TCP socket connection good for continuous socket opening/closing

我正在一个项目中,我需要每5分钟发送一次数据(不多,一次〜300B(+-100))。 一方面是带有apache2服务器的树莓派和一个用作TCP套接字服务器的附加PHP脚本。

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

这是处理此类连接的好方法,还是应该以其他方式进行处理? PHP脚本很好吗?

就是这样,或者只连接一次每个客户端并保持连接有效。 使用数字您可以指定两个都是有效的选择,但是套接字是一种资源,操作系统无法真正无限地分配新资源。 因此,它必须重新使用它们,因此这种打开和关闭方法的伸缩性很好,因为当前未使用的套接字可以回收。

现在,另一方面,如果您的服务器运行apache2只是出于运行仅用作TCP套接字服务器的PHP脚本的原因,那么我想这不是实现此目的的最佳方法。 您可能可以使用WebSockets (仍然使用PHP)并通过CLI运行php,而无需运行apache2。

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

我不建议尝试将网络连接保持5分钟的活动状态(使用TCP keep-alive和/或HTTP keep-live和/或使用Web套接字),因为负载如此之低,您将对网络连接施加更大的压力。系统尝试保持100个连接处于活动状态,而不是让它们每5分钟重新连接一次。

暂无
暂无

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

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