这两天刚入门elasticsearch,做了个页面来做压力测试,结果loadrunner上50个并发都过不了?

@RequestMapping(value = "sqlselect4.do",method = RequestMethod.POST)
public ServerResponse select4(@RequestParam(value = "name",defaultValue = "") String name) throws Exception
{
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddresses(
new TransportAddress(InetAddress.getByName("master"),9300));
System.out.print("连接信息:" + client.toString());
SearchResponse response = client.prepareSearch("test6")//设置要查询的索引(index)
.setSearchType(SearchType.QUERY_THEN_FETCH)
.setTypes("qiye_xinxi")//设置type, 这个在建立索引的时候同时设置了, 或者可以使用head工具查看
.setQuery(QueryBuilders.matchPhraseQuery("Danwei_Name", "石家庄")) //在这里"message"是要查询的field,"Accept"是要查询的内容
.setFrom(0)
.setSize(1000)
.setExplain(true)
.execute()
.actionGet();
List userVoList=new ArrayList();
for (SearchHit hit : response.getHits()) {
ResultVo userVo=new ResultVo();
JSONObject obj = new JSONObject(hit.getSourceAsString());
userVo.setQiye_ID(obj.getString("Qiye_ID"));
userVo.setDanwei_Name(obj.getString("Danwei_Name"));
userVo.setSocialCreditCode(obj.getString("SocialCreditCode"));
userVo.setDanwei_Code(obj.getString("Danwei_Code"));
userVo.setChangeQXBMTime(obj.getString("Create_DATE"));
userVoList.add(userVo);
}
client.close();
return ServerResponse.createBySuccess(userVoList);
}

    查找单位名称包含“石家庄”的前1000条记录。我是在单机上搭建的,单表数量为80万,请大神看看代码哪块有问题?有什么可以优化的地方。

压力测试和很多因素都有关系,例如如果使用同一台机器产生模拟的请求,可能模拟器本身也会消耗资源。如果是另一台机器发送模拟请求,那么还要看网络是不是瓶颈。另外,也要看被测机器的硬件情况,像搜索引擎这种比较依赖硬盘的系统,ssd读取肯定比非ssd磁盘快,性能也更好。另外,我看到你是取前1000个结果,其实现在主流的开源搜索引擎,都比较怕"deep pagination“,也就是说取出前n个搜索结果的开销是比较大的,n越大开销越大。很可能要涉及读取磁盘,你可以改为10或者100试试看