我需要优化多线程分布式环境中mapr分发的get操作所花费的时间 -
1)数据服务正在多个JVM上运行。 2)我正在使用HTablePool(必须坚持不支持ConnectionFactory的客户端版本),并且在分析性能时发现使用connection.getTable()引入了HOTSPOT。
问题 - 初始请求需要大约1秒(我认为是因为客户端没有缓存资源来定位区域等),这需要额外的时间。通常响应时间是几毫秒。
我需要清楚我的理解 - 1)是否每次我们得到一个新的池化HTableInterface时都会有延迟创建客户端缓存来定位区域服务器。 2)如果客户端空闲(池已创建但没有活动),我观察到再次执行get调用需要~1秒。是否有可能始终保持已缓存的区域位置。
我是否应该探索任何客户端设置,以始终将响应时间保持在200毫秒以内。
由于
答案 0 :(得分:0)
克服在core-site.xml
中的属性下面添加过时的连接fs.mapr.rpc.timeout => 400
不是每次都使用connection.getTable,而是创建一次HTable并与多个线程一起使用。
映射器实现的HTable是线程安全的。