我需要优化多线程分布式环境中mapr分发的get操作所用的时间-
1) 数据服务正在多个jvm上运行。2) 我使用的是htablepool(必须使用不支持connectionfactory的客户端版本),在分析性能时发现,使用connection.gettable()会引入热点。
问题-初始请求需要大约1秒(我认为这是因为客户端没有缓存的资源来定位区域等),它需要额外的时间。通常响应时间为几毫秒。
我需要澄清我对-1)的理解是,每次我们得到一个新的池htableinterface时,创建客户端缓存以定位区域服务器都会有延迟。2) 如果客户机空闲(创建了池但没有活动),我观察到再次执行get调用需要大约1秒。有没有可能我让已经缓存的区域位置一直可用。
是否有任何客户端设置,我应该探讨始终保持响应时间小于200毫秒。
谢谢
1条答案
按热度按时间xxb16uws1#
为了克服连接过时的问题,在core-site.xml的属性下面添加了
fs.mapr.rpc.timeout=>400
不是每次都使用connection.gettable,而是创建一次htable并与多个线程一起使用。
htable for mapr实现是线程安全的。