Elasticsearch Java使用非常高的CPU和内存
Elasticsearch突然停止工作,因为CPU使用率很高,现在当我重新启动它时,它继续使用大约100%的CPU和58%的内存,但不会下降。大约有1300.000个数据链接到Elasticsearch。使用Linux服务器Ubuntu 15.04 默认/弹性搜索Elasticsearch Java使用非常高的CPU和内存,java,linux,node.js,amazon-web-services,
elasticsearch,Java,Linux,Node.js,Amazon Web Services,
elasticsearch,Elasticsearch突然停止工作,因为CPU使用率很高,现在当我重新启动它时,它继续使用大约100%的CPU和58%的内存,但不会下降。大约有1300.000个数据链接到Elasticsearch。使用Linux服务器Ubuntu 15.04 默认/弹性搜索 ES_HEAP_SIZE=2g (half of my memeory) MAX_OPEN_FILES=65535 MAX_LOCKED_MEMORY=unlimited limits.conf elasticsearch - no
ES_HEAP_SIZE=2g (half of my memeory)
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited
limits.conf
elasticsearch - nofile 65535
elasticsearch - memlock unlimited
elasticsearch.yml
bootstrap.mlockall: true
curl http://localhost:9200/_nodes/hot_threads?pretty=true
:::
{elasticnode}{wrdxzFcXT0aTXnp4R5KFbA}{127.0.0.1}{localhost/127.0.0.1:9300}
2016-03-01T10:24:09.884Z时的热线程,间隔=500ms,最忙线程=3,ignoreIdleThreads=true:
按线程“elasticsearch[elasticnode][clusterService#updateTask][T#1]”划分的93.7%(500毫秒中有468.4毫秒)cpu使用率
10/10快照共享以下29个元素
sun.nio.fs.UnixNativeDispatcher.readdir(本机方法)
UnixDirectoryStream$UnixDirectoryIterator.readNextEntry(UnixDirectoryStream.java
:168)
UnixDirectoryStream$UnixDirectoryIterator.hasNext(UnixDirectoryStream.java:201)
org.elasticsearch.index.translog.translog$OnCloseRunnable.handle(translog.java:726)
org.elasticsearch.index.translog.translog$OnCloseRunnable.handle(translog.java:713)
org.elasticsearch.index.translog.ChannelReference.closeInternal(ChannelReference.java:67)
org.elasticsearch.common.util.concurrent.AbstractRefCounted.decRef(AbstractRefCounted.java:
64)
org.elasticsearch.index.translog.TranslogReader.close(TranslogReader.java:143)
org.apache.lucene.util.IOUtils.close(IOUtils.java:97)
org.elasticsearch.index.translog.translog.close(translog.java:425)
org.apache.lucene.util.IOUtils.close(IOUtils.java:97)
org.apache.lucene.util.IOUtils.close(IOUtils.java:84)
org.elasticsearch.index.engine.InternalEngine.closeNoLock(InternalEngine.java:990)
org.elasticsearch.index.engine.engine.close(engine.java:1147)
org.apache.lucene.util.IOUtils.close(IOUtils.java:97)
org.apache.lucene.util.IOUtils.close(IOUtils.java:84)
org.elasticsearch.index.shard.IndexShard.close(IndexShard.java:837)
org.elasticsearch.index.IndexService.closeShardInjector(IndexService.java:443)
org.elasticsearch.index.IndexService.removeShard(IndexService.java:416)
org.elasticsearch.index.cluster.indiceclusterstateservice.failAndRemoveShard(indiceclus
terStateService.java:743)
org.elasticsearch.index.cluster.IndicatesClusterStateService.applyMappings(IndicatesClusterST
ateService.java:364)
org.elasticsearch.index.cluster.indiceClusterStateService.clusterChanged(indiceClusters
tateService.java:164)
org.elasticsearch.cluster.service.InternalClusterService.runTasksForExecutor(InternalCluste
java:600)
org.elasticsearch.cluster.service.InternalClusterService$UpdateTask.run(InternalClusterServ
ice.java:762)
org.elasticsearch.common.util.concurrent.PrioritydesThreadPoolExecutor$TiebrakingPriorit
runAndClean(prioritizedThreadPoolExecutor.java:231)
org.elasticsearch.common.util.concurrent.PrioritydesThreadPoolExecutor$TiebrakingPriorit
运行(prioritizedThreadPoolExecutor.java:194)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
run(Thread.java:745)
按线程“elasticsearch[elasticnode][transport\u clie”计算的0.1%(500毫秒中有263.4毫秒)cpu使用率nt#u timer][T#1]{哈希轮定时器#1}' 10/10快照共享以下5个元素 java.lang.Thread.sleep(本机方法) org.jboss.netty.util.HashedWheelTimer$Worker.waitForNextTick(HashedWheelTimer.java:445)org.jboss.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:364)org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) run(Thread.java:745) 查询示例。这是
elasticsearch.php
中的代码:
public function advancedquery($type, $query) {
return $this->call($type . '/_search', 'POST', $query);
}
你知道这是怎么回事吗?我可以根据需要提供任何附加信息。基于评论。每10分钟运行一次
cronjob
,node.js在JavaScript
中运行一个文件。根据您的问题,您的JS
文件正在同一服务器上ping一个PHP
文件。在同一台服务器上,您有一个Java
核心运行您的posix
东西
CPU过载问题的答案是:
选择一个系统。您有三个环境在同一个实例上运行。Java和PHP在上运行,Node.JS在上运行。你甚至不应该跨越Java和PHP。这就是问题所在。这就像同时运行AutoCad、Final Cut Pro和虚幻游戏引擎一样。。。不是那样的
将您的系统压缩为您选择的一种语言,并由支持。当然。您能提供用于发出请求的代码吗?尽管听起来不管发出什么请求,它都是100%的红线批注,对吗?另外,为了清楚起见,您使用的是AWS ElasticSearch?@iskore
public function advancedquery($type,$query){return$this->call($type./\u search',POST',$query);}
这是ElasticSearch.php中的代码。是的,没有任何请求,使用率始终非常高。不,我们没有使用AWS ES.Hmm。您是想在Java环境中运行PHP还是别的什么?不确定这是如何连接的。另外,您是否可以暂时阻止实例向ElasticSearch发出任何请求?这将显示实例是否导致峰值。如果实例没有导致尖峰,您可能需要放大ElasticSearch Clustern,而不是一个问题。所以,让我们开始吧