Sockets 在长时间运行的过程中,我应该保持插座打开吗?

Sockets 在长时间运行的过程中,我应该保持插座打开吗?,sockets,graphite,Sockets,Graphite,我有一些程序偶尔(每隔几分钟到每小时一次)需要发送度量。我应该在进程期间保持graphite服务器的套接字处于打开状态,还是在每次需要发送一些指标时建立新连接?执行其中一项操作时需要考虑哪些因素?听起来您需要TCP连接 您是否应该保持连接处于活动状态取决于以下几点的答案: -是否要在任何给定时间监视服务器上的“已连接”客户端? -服务器端是否有与上一点相关的限制? -“连接”到服务器的此类客户端的数量? -如果创建连接需要一些时间,这是一个问题吗 如果保持连接打开,只需确保不时发送保持活动的消息

我有一些程序偶尔(每隔几分钟到每小时一次)需要发送度量。我应该在进程期间保持graphite服务器的套接字处于打开状态,还是在每次需要发送一些指标时建立新连接?执行其中一项操作时需要考虑哪些因素?

听起来您需要TCP连接

您是否应该保持连接处于活动状态取决于以下几点的答案: -是否要在任何给定时间监视服务器上的“已连接”客户端? -服务器端是否有与上一点相关的限制? -“连接”到服务器的此类客户端的数量? -如果创建连接需要一些时间,这是一个问题吗

如果保持连接打开,只需确保不时发送保持活动的消息(提供应用程序级别)

连接到服务器的大量客户端(即使在不活动时)可能会消耗内存或对象资源(例如,如果每个连接有一个线程)。 另一方面,保持连接处于打开状态将允许客户端更快地检测到与服务器的连接是否存在问题(如果这很重要的话)


这完全取决于需要什么时候。

我实际上还没有完成实现:)我很可能每次只打开一个新的套接字。这对性能有很大影响吗?