什么是弹性搜索?是cpu,内存等

时间:2014-12-02 11:12:42

标签: elasticsearch

我在个人邮箱中进行弹性搜索。

  • 内存:6GB
  • 处理器:Intel®Core™i3-3120M CPU @ 2.50GHz×4
  • 操作系统:Ubuntu 12.04 - 64位

ElasticSearch设置:仅在本地运行

  • 版本:1.2.2
  • ES_MIN_MEM = 3g
  • ES_MAX_MEM = 3g
  • threadpool.bulk.queue_size:3000
  • indices.fielddata.cache.size:25%
  • http.compression:true
  • bootstrap.mlockall:true
  • script.disable_dynamic:true
  • cluster.name:elasticsearch
  • 索引大小:252MB

方案: 我正在尝试测试批量查询/聚合的性能。测试用例是对node.js运行异步http请求,而node.js又调用弹性搜索。测试是从Java方法运行的。一次启动50个请求。每个请求都被划分并并行化为node.js中的两个异步(async.parallel)批量查询。我正在使用node-elasticsearch api(使用elasticsearch 1.3 api)。这两个批量查询分别包含13个和10个查询。这两个查询从node.js异步发送到弹性搜索。当弹性搜索返回时,查询结果将合并并发送回测试用例。

观察: 我看到所有的cpu核心都是100%使用的。内存利用率约为90%。所有50个请求的响应时间合计为30秒。如果我只运行单个查询,那么在批量查询中,每个查询都会在不到100毫秒的时间内返回。 Node.js花费的时间可以忽略不计,可以将请求转发给弹性搜索,并结合弹性搜索的响应。 即使从java同步运行测试用例,响应时间也不会改变。我可以说弹性搜索不是并行处理。这是因为我是CPU还是内存绑定? 还有一个观察结果:如果我将弹性搜索的堆大小从1 - 3GB更改,则响应时间不会改变。

我也粘贴了最高命令输出:

    top - 18:04:12 up  4:29,  5 users,  load average: 5.93, 5.16, 4.15
Tasks: 224 total,   3 running, 221 sleeping,   0 stopped,   0 zombie
Cpu(s): 98.2%us,  1.0%sy,  0.0%ni,  0.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   5955796k total,  5801920k used,   153876k free,     1548k buffers
Swap:  6133756k total,   708336k used,  5425420k free,   460436k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                           
17410 root      20   0 7495m 3.3g  27m S  366 58.6   5:09.57 java                                                                              
15356 rmadd     20   0 1015m 125m 3636 S   19  2.2   1:14.03 node 

问题: 这是预期的,因为我在本地计算机上而不是在群集中运行弹性搜索?我可以在本地机器上提高性能吗?我肯定会启动一个集群。但我想知道,如何提高性能可扩展性。什么是弹性搜索必然会发生什么?

我无法在论坛中找到这个。我相信这会对其他人有所帮助。谢谢你的帮助。

0 个答案:

没有答案