i would rather suggest you separate the nodes roles. you could divide them
into 3 node roles.
1.Index node : for index data
2.load balance : for query , you could maximize load balance node memory
for avoiding the GC consume too much memory.
3.data node : just for store the data.
and optimize the routing strategy for query.
Those echo node has 96G, what a high allocations.
在 2014年7月31日星期四UTC+8下午10时51分17秒,Christopher Ambler写道:
>
> Okay, let's attack this directly. We have a cluster of 6 machines (6
> nodes). We have an index of just under 3.5 million documents. Each document
> represents an Internet domain name. We are performing queries against this
> index to see names that exist in our index. Most queries are coming back in
> the sub-50ms range. But a bunch are taking 600ms to 900ms and, thus,
> showing up in our slow query log. If they ALL were performing at this
> speed, I'd wouldn't be nearly as confused, but it looks like only about 10%
> to 20% of the queries are "slow." That's clearly too much.
>
> Head reports that this index looks like this:
>
> aftermarket-2014-07-31_02-38-19
> size: 424Mi (2.47Gi)
> docs: 3,428,471 (3,428,471)
>
> Here is the configuration for a typical node (they're all pretty-much the
> same). We have 2 machines in a dev data center, 2 machines in a mesa data
> center and 2 machines in a phx data center. Each of the two machines in a
> data center has a "node.zone" tag set, and, as you can see, I have the
> cluster routing awareness set to see "zone" as its marching orders. The
> data pipes between the data centers are beefy, and while I acknowledge that
> cross-DC isn't something that's generally smiled-upon, it appears to work
> fine.
>
> Each machine has 96G of RAM. We start ES giving it 30G for the heap size.
> File descriptors are set at 64,000. Note that I've selected the memory
> mapped file system.
>
> #
> # Server-specific settings for cluster domainiq-es
> #
> cluster.name: domainiq-es
> node.name: "Mesa-03"
> node.zone: es-mesa-prod
> discovery.zen.ping.unicast.hosts: ["dev2.glbt1.gdg", "m1p1.mesa1.gdg",
> "m1p4.mesa1.gdg", "p3p3.phx3.gdg", "p3p4.phx3.gdg"]
> #
> # The following configuration items should be the same for all ES servers
> #
> node.master: true
> node.data: true
> index.number_of_shards: 5
> index.number_of_replicas: 5
> index.store.type: mmapfs
> index.memory.index_buffer_size: 30%
> index.translog.flush_threshold_ops: 25000
> index.refresh_interval: 30s
> bootstrap.mlockall: true
> cluster.routing.allocation.awareness.attributes: zone
> gateway.recover_after_nodes: 4
> gateway.recover_after_time: 2m
> gateway.expected_nodes: 6
> discovery.zen.minimum_master_nodes: 3
> discovery.zen.ping.timeout: 10s
> discovery.zen.ping.retries: 3
> discovery.zen.ping.interval: 15s
> discovery.zen.ping.multicast.enabled: false
>
> And here is a typical slow query:
>
> [2014-07-31 07:35:31,530][WARN ][index.search.slowlog.query] [Mesa-03]
> [aftermarket-2014-07-31_02-38-19][2] took[707.6ms], took_millis[707],
> types[premium], stats[], search_type[QUERY_THEN_FETCH], total_shards[5],
> source[],
> extra_source[{"size":35,"query":{"query_string":{"query":"sld:petusies^20.0
> OR tokens:(((pet^1.2 pets^1.0 *^1.0)AND(us^1.2 *^0.8)AND(ie^1.2
> *^0.6)AND(s^1.2 *^0.4)) OR((pet^1.2 pets^1.0)AND(us^1.2)AND(ie^1.2))^3.0)
> AND tld:(com^1.001 OR in^0.99 OR co.in^0.941174367459617 OR
> net.in^0.8848832474555992
> OR us^0.85 OR org.in^0.8397882862729736 OR gen.in^0.785829669672289 OR
> firm.in^0.7414549824163524 OR ind.in^0.7 OR org^0.6) OR
> _id:petusi.es^5.0-domaintype:partner","lowercase_expanded_terms":true,"analyze_wildcard":false}}}],
>
>
>
> So note that I create 5 shards and 5 replicas, so that each node has all 5
> shards at all times. I THOUGHT THIS MEANT BETTER PERFORMANCE. That is, I
> thought having all 5 shards on every node meant that a query to a node
> didn't have to ask another node for data. IS THIS NOT TRUE?
>
> Here's where it also gets interesting: I tried setting the number of
> shards to 2 (with 5 replicas) and my slow queries went to almost 2 seconds
> (2000ms). This is also terribly counter-intuitive! I thought fewer shards
> meant less lookup time.
>
> Clearly, I want to optimize for read here. I don't care if indexing is
> three times as slow, we need our queries to be sub-100ms.
>
> Any help is SERIOUSLY appreciated (and if you're in the Bay Area, I'm not
> above bribes of beer :-))
>
--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/5591aa45-b933-43c9-a13a-168deb53bdf1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.