solrcloud查询速度慢的问题

3 篇文章 0 订阅
3 篇文章 0 订阅

solrcloud环境下,本地solrj调试solr查询,发现查询速度特别慢,查1w条数据,耗时12389毫秒;

对比mysql数据库,查1w条数据,耗时2847毫秒;

solr竟然慢了近10秒!!!

追踪solr源代码,

 Environment.logEnv("Client environment:", LOG);

这一行在zookeeper初始化的时候执行了,跟踪后发现这一行代码好使特别长,继续向下走,

 

org.apache.zookeeper.Environment这个类里面红色框里标识了耗时最大的代码。

问题出在了:InetAddress.getLocalHost().getCanonicalHostName(),

查询相关资料,并没有发现此方法执行特别慢的解决方法,而且这个方法并不是什么至关重要的地方(可能是自己功力不够),

先来个main方法,演示下此处耗时:

public static void outHostName(InetAddress address, String s) {
		
		System.out.println("通过" + s + "创建InetAddress对象");
		System.out.println("b:"+CusDateUtils.toDateTimeString());
		System.out.println("主 机 名:" + address.getCanonicalHostName());
		System.out.println("c:"+CusDateUtils.toDateTimeString());
		System.out.println("主机别名:" + address.getHostName());
		System.out.println("d:"+CusDateUtils.toDateTimeString());
	}

	public static void main(String[] args) throws Exception {
		System.out.println("a:"+CusDateUtils.toDateTimeString());
		outHostName(InetAddress.getLocalHost(), "getLocalHost方法");
//		outHostName(InetAddress.getByName("www.ibm.com"), "www.ibm.com");
//		outHostName(InetAddress.getByName("www.126.com"), "www.126.com");
//		outHostName(InetAddress.getByName("202.108.9.77"), "202.108.9.77");
//		outHostName(InetAddress.getByName("211.100.26.121"), "211.100.26.121");
	}


执行结果如下:
a:2019-09-06 17:19:35
通过getLocalHost方法创建InetAddress对象
b:2019-09-06 17:19:35
主 机 名:DESKTOP-0AC74II
c:2019-09-06 17:19:44
主机别名:DESKTOP-0AC74II
d:2019-09-06 17:19:44

发现木有,getCanonicalHostName方法耗时近9秒!!!!

问题找到,用getHostName替换掉getCanonicalHostName方法,

拷贝Environment类到工程目录,进行重写。

    public static List<Entry> list() {
        ArrayList<Entry> l = new ArrayList<Entry>();
        put(l, "zookeeper.version", Version.getFullVersion());

        try {
            put(l, "host.name",
                InetAddress.getLocalHost().getHostName());
//            InetAddress.getLocalHost().getCanonicalHostName());
        } catch (UnknownHostException e) {
            put(l, "host.name", "<NA>");
        }
        略。。。。
}

重新测试solr查询的速度,查1w条数据,耗时2951毫秒;比之前的12389毫秒有了很大提升!!

 

备注:网上说改hosts表的方法,我试过了,没什么效果。

把getCanonicalHostName的main方法放在server2012和centos上测试,都执行很快,只是本地win10慢!

另,zookeeper是个比较成熟的工具了,但网上也米有别人提出此类问题,应该不是我第一个发现这种问题,可能是自己功力不够吧!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值