我们现在的集群(由3个节点组成)问题是:CPU利用率不超过50%,load负载不超过一半,但是某一时刻会发生get请求被拒绝的情况
log日志信息如下:
[2019-01-13T18:47:25,318][DEBUG][o.e.a.g.TransportGetAction] [node-***] null: failed to execute [get [myindex_name][_doc][50650409]: routing [null]]
org.elasticsearch.transport.RemoteTransportException: [node-***][*.*.*.*:9300][indices:data/read/get[s]]
Caused by: org.elasticsearch.common.util.concurrent.EsRejectedExecutionException: rejected execution of org.elasticsearch.transport.TcpTransport$RequestHandler@13b8f51 on EsThreadPoolExecutor[name = node-***/get, queue capacity = 1000, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@6c611c6e[Running, pool size = 24, active threads = 24, queued tasks = 1000, completed tasks = 8002224]]
get队列满了,所以get请求被拒绝。
现在我想既然资源没有100%利用,是不是可以在同一台服务器上部署 两个节点,从而增大get的请求 并发数。
如果这样可以缓解问题的话,那么同一台服务器 部署两个节点 需要注意什么呢?
我记得以前看过相关文档,数据不能分布在同一服务器上。
还有 processor 也许可以设置成cpu数的 一半(但是我不想改这个数)
log日志信息如下:
[2019-01-13T18:47:25,318][DEBUG][o.e.a.g.TransportGetAction] [node-***] null: failed to execute [get [myindex_name][_doc][50650409]: routing [null]]
org.elasticsearch.transport.RemoteTransportException: [node-***][*.*.*.*:9300][indices:data/read/get[s]]
Caused by: org.elasticsearch.common.util.concurrent.EsRejectedExecutionException: rejected execution of org.elasticsearch.transport.TcpTransport$RequestHandler@13b8f51 on EsThreadPoolExecutor[name = node-***/get, queue capacity = 1000, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@6c611c6e[Running, pool size = 24, active threads = 24, queued tasks = 1000, completed tasks = 8002224]]
get队列满了,所以get请求被拒绝。
现在我想既然资源没有100%利用,是不是可以在同一台服务器上部署 两个节点,从而增大get的请求 并发数。
如果这样可以缓解问题的话,那么同一台服务器 部署两个节点 需要注意什么呢?
我记得以前看过相关文档,数据不能分布在同一服务器上。
还有 processor 也许可以设置成cpu数的 一半(但是我不想改这个数)
1 个回复
zqc0512 - andy zhou
赞同来自: Leeeo
cluster.routing.allocation.same_shard.host 这玩意要true