出现错误
今天在安装es的拼音分词器,并重启es容器后,登录Kibana无法使用,查询日志发现如下报错
Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations... | type=log @timestamp=2024-10-30T10:26:36+08:00 tags=["info","savedobjects-service"] pid=7 Starting saved objects migrations | type=log @timestamp=2024-10-30T10:26:36+08:00 tags=["info","savedobjects-service"] pid=7 ResponseError: circuit_breaking_exception: [circuit_breaking_exception] Reason: [parent] Data too large, data for [<http_request>] would be [282858312/269.7mb], which is larger than the limit of [268435456/256mb], real usage: [282858312/269.7mb], new bytes reserved: [0/0b], usages [request=0/0b, fielddata=0/0b, in_flight_requests=0/0b, model_inference=0/0b, eql_sequence=0/0b, accounting=67696/66.1kb] at onBody (/usr/share/kibana/node_modules/@elastic/elasticsearch/lib/Transport.js:367:23) at IncomingMessage.onEnd (/usr/share/kibana/node_modules/@elastic/elasticsearch/lib/Transport.js:291:11) at IncomingMessage.emit (node:events:402:35) at endReadableNT (node:internal/streams/readable:1343:12) at processTicksAndRejections (node:internal/process/task_queues:83:21) { meta: { body: { error: [Object], status: 429 }, statusCode: 429, headers: { 'x-elastic-product': 'Elasticsearch', 'content-type': 'application/json; charset=UTF-8', 'content-length': '931' }, meta: { context: null, request: [Object], name: 'elasticsearch-js', connection: [Object], attempts: 0, aborted: false } } } | type=log @timestamp=2024-10-30T10:26:37+08:00 tags=["fatal","root"] pid=7 Stopping all plugins. | type=log @timestamp=2024-10-30T10:26:37+08:00 tags=["info","plugins-system","standard"] pid=7 Monitoring stats collection is stopped | type=log @timestamp=2024-10-30T10:26:37+08:00 tags=["info","plugins","monitoring","monitoring","kibana-monitoring"] pid=7
问题分析
内存限制超出:
- 错误信息显示,当前请求数据量为269.7MB,超过了256MB的限制,导致Elasticsearch拒绝处理该请求。
- Elasticsearch内存限制:Elasticsearch的内存限制可能导致Kibana在执行已保存对象的迁移时出现问题。当Elasticsearch的内存不足时,无法顺利处理迁移过程中的数据操作,从而导致错误
Kibana状态:
- 因为错误,Kibana停止了所有插件并结束了监控统计信息的收集。
解决方法
1.调整Elasticsearch内存设置:
可以考虑增加Elasticsearch的内存限制。编辑Elasticsearch的
jvm.options
文件,增加-Xmx
和-Xms
参数,例如:-Xms2g -Xmx2g
注:需要根据服务器的可用内存做相应调整。
2.优化请求:
尝试优化导致该请求的数据大小,可能需要减少一次请求的数据量。
3.查看内存使用情况:
监控Elasticsearch的内存使用情况,确保没有其他进程占用过多内存。
4.调整Circuit Breaker设置:
可以考虑调整Elasticsearch的
circuit_breaker
设置,以增加请求大小限制。这可以在Elasticsearch的elasticsearch.yml
中进行配置:indices.breaker.request.limit: 70%
注:可以根据需求自己设置参数
5.重启服务:
在进行配置更改后,重启Elasticsearch和Kibana,以使更改生效。
6.检查其他因素:
确保没有其他资源争用(如磁盘IO等),可能会影响Elasticsearch的性能。
通过以上方法,您应该能够解决内存限制问题并成功完成Kibana的已保存对象迁移。如果问题仍然存在,请考虑查阅更多的日志或咨询Elasticsearch的文档。