gpt4 book ai didi

elasticsearch - 索引时 Elasticsearch 面临内存问题

转载 作者:行者123 更新时间:2023-12-02 22:57:54 24 4
gpt4 key购买 nike

我有3个运行16GB的节点(aws elasticsearch服务),用于 flex 搜索服务。我已将ES配置为具有3个带有2个副本的分片。这三个节点负责索引数据以及查询和获取数据。

所有3个的堆分配为7GB。

数据分为2个索引,即index1和index2。 Index1没有太多数据,并且文档很小。 Index2是较重的索引,但是其中的最大文档大小也是1MB。

但是,在为index2的某些文档建立索引时,许多ES实例都会抛出OutOfMemoryException。我检查了分片内存,并且index2中总共有3.5 GB的文档数据。

我无法找出原因,无法在调试问题上寻求帮助。

该文档的结构类似于:

    {  
"name":"ABC",
"class":10,
"school":"XYZ",
"subjects":[
{
"A":{
"name":"subject a",
"marks":80,
"passed":true
}
},
{
"B":{
"name":"subject B",
"marks":76,
"passed":true
}
}
]
}

“主题”键中的数组的长度最多为3000。

使用的ES版本是5.1.0。

在下面找到堆栈跟踪:
[2017-07-28T15:44:13,912][WARN ][o.e.m.j.JvmGcMonitorService] [obLzpwI] [gc][849973] overhead, spent [26s] collecting in the last [26.1s]
[2017-07-28T15:44:13,895][WARN ][o.e.t.n.Netty4Transport ] [obLzpwI] exception caught on transport layer [[!!!io.netty.channel.socket.nio.NioSocketChannel@650b7925=>java.lang.OutOfMemoryError:Compressed class space!!!]], closing connection
org.elasticsearch.ElasticsearchException: java.lang.OutOfMemoryError: Compressed class space
at org.elasticsearch.transport.netty4.Netty4Transport.exceptionCaught(Netty4Transport.java:326) [transport-netty4-5.1.2.jar:5.1.2]
at org.elasticsearch.transport.netty4.Netty4MessageChannelHandler.exceptionCaught(Netty4MessageChannelHandler.java:84) [transport-netty4-5.1.2.jar:5.1.2]
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:296) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.notifyHandlerException(AbstractChannelHandlerContext.java:861) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:375) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) [netty-codec-4.1.6.Final.jar:4.1.6.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:280) [netty-codec-4.1.6.Final.jar:4.1.6.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:396) [netty-codec-4.1.6.Final.jar:4.1.6.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) [netty-codec-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:651) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:536) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:490) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:450) [netty-transport-4.1.6.Final.jar:4.1.6.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873) [netty-common-4.1.6.Final.jar:4.1.6.Final]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: java.lang.OutOfMemoryError: Compressed class space

最佳答案

您已用完压缩的类空间,而不是堆内存。可以使用-XX: CompressedClassSpaceSize=1g(作为示例值)进行配置。

您可以在oracle的docs here上找到更多有关此内容的信息,该内容排在第二位。

但是,这很可能只是在治疗症状。

github issue上描述的一些较早版本的elastic存在已知问题。此特定问题是由每个请求编译一个唯一的脚本引起的。如果这听起来与您的问题有关,那么可能需要使用触发异常的实际API调用来更新您的答案。

关于elasticsearch - 索引时 Elasticsearch 面临内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45379091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com