Pivotal Knowledge Base

关注

关于remove-unresponsive-client属性的详细解释

环境

  • 在gemfire.properties文件中的remove-unresponsive-client 属性
  • 在cache.xml 文件中的maximum-message-count

背景介绍

在用户手册中对 "remove-unresponsive-client"有如下的描述:

When this property is set to true, the primary server drops unresponsive clients from itself, as well as, all secondaries. Clients are deemed unresponsive when their messaging queues become full on the server. While a client's queue is full, puts that would add to the queue block on the server.

本文提供了对cache.xml文件中配置了maximum-message-count前提下,基于"remove-unresponsive-client"属性时Gemfire的相应处理(例如:对于反应缓慢或无反应的客户端时怎么处理)做了更为详细的描述。

描述

默认情况下当remove-unresponsive-client=false时,所有向客户端产生消息的的region操作(比如put)都会被阻塞,直到客户端消息队列中有了额外空间可容纳新的消息。因此虽然消息并未丢失,但是region的操作性能可能因为缓慢或无响应的客户端而产生负面影响。

而在remove-unresponsive-client=true的情况下,针对存在问题的客户端,其消息队列(CacheClientProxy)会被清空并移除,同时region操作将不会被阻塞。另外,这些客户端将失去与服务器端的链接,只要是这些客户端还是处于正常状态,它们将开始容错转移(failover)并尝试重新链接。虽然队列中的消息会丢失,但是正常的客户端可以重新连接并恢复接收任何新的消息。

结论

在反应缓慢或失去响应的客户端存在时,remove-unresponsive-client设定可以同cache.xml中的maximum-message-count相结合,以期更好管理系统可靠性和性能之间的平衡。

另一种可选的替代方案是将未发送的消息转移到(overflow)到硬盘中。具体的介绍,可以参照如下的文章: 限制服务器端的订阅队列内存使用 

评论

由 Zendesk 提供技术支持