【问题标题】:infinispan client HOTROD massive put data ISPN000476: Timed out waiting for responses for requestinfinispan客户端HOTROD海量数据ISPN000476:等待请求响应超时
【发布时间】:2022-01-27 13:56:30
【问题描述】:

我发现了对该问题的其他响应,但如果有人有配置解决方案方面或其他情况下是分布式缓存服务限制,我想解释我的用例。

DATA GRID 服务器 8.2.3 在集群 4 虚拟机中,配置如下

{
      "distributed-cache": {
        "mode": "SYNC",
        "remote-timeout": 17500,
        "state-transfer": {
          "timeout": 60000
        },
        "encoding": {
          "key": {
            "media-type": "text/plain"
          },
          "value": {
            "media-type": "application/x-protostream"
          }
        },
        "locking": {
          "concurrency-level": 1000,
          "acquire-timeout": 15000,
          "striping": false
        },
        "statistics": true
      }
    }

应用端客户端 HOT-ROD 版本和标准 Jcache lib 版本12.1.11.Final-redhat-00001

@PostConstruct
  private void setUp() {
      LOGGER.info("START [setUp] CACHE");
     
      File conf = new File(System.getenv("CLIENT_HOTROD_FILE_PATH"));
     
      URI uri = conf.toURI();
    
      // Retrieve the system wide cache manager via org.infinispan.jcache.remote.JCachingProvider
      javax.cache.CacheManager cacheManager = Caching.getCachingProvider("org.infinispan.jcache.remote.JCachingProvider")
            .getCacheManager(uri, this.getClass().getClassLoader(), null);
      
      this.cache = cacheManager.getCache(DATAGRIDKEY);
     
      LOGGER.info("END [setUp] cache " + this.cache.getName() );
  }

客户端配置是默认的。

我执行的测试是:在集群上的分布式缓存 infinispan 上大量放置数据 应用程序经常收到来自服务器的响应超时,如下所示:

[1/26/22 14:58:02:767 CET] 00001ffd HOTROD W org.infinispan.client.hotrod.impl.protocol.Codec20 checkForErrorsInResponseStatus ISPN004005: Error received from the server: org.infinispan.util.concurrent.TimeoutException: ISPN000476: Timed out waiting for responses for request 1770 from DM10RH08

有没有办法通过配置来优化服务器端和客户端的性能?

【问题讨论】:

    标签: java caching datagrid infinispan hot-rod


    【解决方案1】:

    我解决了更改服务器数据网格配置的问题

    从 SYNC 到 ASYNC 模式的分布式缓存。

    服务器端超过远程超时是由于集群数据网格的子节点中同步复制键花费的时间造成的。

    来自数据网格文档 (doc SYNC and ASYNC replication):

    复制模式可以是同步的或异步的,具体取决于 正在解决的问题。

    同步复制会阻塞线程或调用者(例如在 put() 操作),直到修改被复制到所有 集群中的节点。通过等待确认,同步 复制确保所有复制都成功应用 在手术结束之前。

    异步复制的运行速度明显快于 同步复制,因为它不需要等待响应 从节点。异步复制在 背景和呼叫立即返回。期间发生的错误 异步复制被写入日志。结果,一个 交易可以成功完成,尽管事实上 事务的复制可能未在所有缓存上成功 集群中的实例。

    我上次的服务器配置:

    {
      "distributed-cache": {
        "mode": "ASYNC",
        "remote-timeout": 17500,
        "state-transfer": {
          "timeout": 60000
        },
        "encoding": {
          "key": {
            "media-type": "text/plain"
          },
          "value": {
            "media-type": "application/x-protostream"
          }
        },
        "locking": {
          "concurrency-level": 1000,
          "acquire-timeout": 15000,
          "striping": false
        },
        "statistics": true
      }
    }
    

    而且总是在服务器配置中(/opt/redhat/redhat-datagrid-8.2-server/bin/server.conf)

    我将Xms设置为与Xmx相同的大小,以避免GC启动时性能下降。

    我找到了性能调优链接:performance tuning cache link

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 2015-07-06
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多