如何查看solr中cache的使用情况

之前在 这篇博客中 (http://suichangkele.iteye.com/blog/2365868)写到了关于solr所使用的cache的统计信息的获取,但是他只在更新SolrIndexSearcher的时候才会触发,那么如何能随时的查看cache的使用情况呢?倒着推:如果要查找缓存的使用,必须获得SolrCore,获得SolrCore太简单了,任何一个Request都可以获得SorlCore,那么只要添加一个RequestHandler就可以了。我的代码如下:

public class CacheStatisticsRequestHandler extends RequestHandlerBase{

	/**这四个参数分别对应solrconf.xml中的四个缓存的名字*/
	public static final String  filterCache_name = "filterCache";
	public static final String  queryResultCache_name = "queryResultCache";
	public static final String  documentCache_name = "documentCache";
	public static final String  fieldValueCache_name = "fieldValueCache";
	
	private static final Logger logger = LoggerFactory.getLogger(CacheStatisticsRequestHandler.class);
	
	@Override
	public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {

		logger.debug("参数是:" + req.getParams());
		
		Map<String, SolrInfoMBean> info = req.getCore().getInfoRegistry();
		rsp.add(CacheStatisticsRequestHandler.filterCache_name, info.get(CacheStatisticsRequestHandler.filterCache_name).getStatistics());
		rsp.add(CacheStatisticsRequestHandler.queryResultCache_name, info.get(CacheStatisticsRequestHandler.queryResultCache_name).getStatistics());
		rsp.add(CacheStatisticsRequestHandler.documentCache_name, info.get(CacheStatisticsRequestHandler.documentCache_name).getStatistics());
		rsp.add(CacheStatisticsRequestHandler.fieldValueCache_name, info.get(CacheStatisticsRequestHandler.fieldValueCache_name).getStatistics());
		
	}

	/**这个方法会自动的被调用,不用显示在构造方法中调用*/
	@Override
	public void init(NamedList args) {
		super.init(args);
		logger.info("初始化" + this.getClass().getName() + "实例");
	}
	
	@Override
	public String getDescription() {
		return null;
	}

}

 然后再solrconf.xml中配置一下就可以了

 <requestHandler name="/cacheStats" class="com.comall.requestHandler.CacheStatisticsRequestHandler ">
	<!--自己定义的requestHandler-->
  </requestHandler>

然后在浏览器中访问一下这个requestHandler就可以了 。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值