清理Elasticsearch占用的内存和磁盘空间

这篇具有很好参考价值的文章主要介绍了清理Elasticsearch占用的内存和磁盘空间。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,遇到OutOfMemoryError问题

打开Kibana,发现连不上Elasticsearch了,提示Cannot connect to the Elasticsearch cluster,检查:

systemctl status elasticsearch

发现是Elasticsearch service dead挂了。

继续检查错误日志/var/log/elasticsearch/elasticsearch.log

[ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [laolitou] fatal error in thread [elasticsearch[laolitou][write][T#1]], exiting
java.lang.OutOfMemoryError: Java heap space...

疑似Elasticsearch内存溢出。

通过

free -h

确实发现系统内存几乎100% ;

进一步的对各程序的资源使用做使用排序

ps aux --sort=-%mem | head

发现 Elasticsearch内存超出了jvm.options里的设定:

vim /etc/elasticsearch/jvm.options

理论上,其中的-Xms(初始堆大小)和-Xmx(最大堆大小)参数适当调大就可以解决问题。可是我资源升级服务器,只能进一步压缩Elasticsearch的内存。也就是删除历史久远的索引文件,以到达清理内存和磁盘空间的作用。

 二,查询历史索引文件

首先,你需要登录到Kibana界面。在Kibana中,通常有一个名为“Dev Tools”的部分,它提供了一个用于执行Elasticsearch请求和响应的交互式界面。在Console中输入查询语句

GET /_cat/indices/your_old_indexname_*?v
//支持*模糊查询

也可以通过Kibana下的“Management”下,查看Elasticsearch中的Index management查看索引清单,支持通过索引名称模糊查询。

三,删除数据

1,使用Delete By Query API

在Dev Tools中,你可以编写并执行Elasticsearch的Delete By Query API请求来删除特定条件下的数据。这个API允许你基于查询条件删除文档。例如,你可以编写一个查询来删除某个索引中特定日期之前的所有文档。

POST /your_index/_delete_by_query  
{  
  "query": {  
    "range": {  
      "date_field": {  
        "lt": "2023-01-01"  
      }  
    }  
  }  
}

这个请求会删除your_index索引中date_field字段值小于"2023-01-01"的所有文档。

2,删除具体索引

除了删除特定数据外,你还可以直接删除整个不再需要的索引。在Dev Tools中,你可以使用Delete Index API来删除索引。

DELETE /your_old_index
或
DELETE /your_old_index1,your_old_index2,your_xyz_*
// 根据实际情况修改索引名称模式

四,优化索引以释放磁盘空间

删除数据后,Elasticsearch并不会立即释放磁盘空间,因为删除操作只是标记文档为已删除,并不会立即清理底层文件。为了释放磁盘空间,你可以使用Force Merge API来合并段并清理删除标记。

POST /your_index/_forcemerge?max_num_segments=1&only_expunge_deletes=true
或
POST /_forcemerge?max_num_segments=1&only_expunge_deletes=true

执行完删除和清理操作后,使用Kibana的Monitoring功能或其他监控工具来检查Elasticsearch集群的状态和磁盘使用情况,确保一切正常。同时,也可以再次列出索引来确认已删除的索引不再出现在列表中。

五,其他:堆外内存和内存锁定

在以上操作后,可能部分环境下磁盘是明显降低了,但是内存还不降低的原因1是因为内存占用不会低于jvm.options的-Xms(初始堆大小),2是因为Elasticsearch除了使用JVM堆内存外,还会使用一部分堆外内存。堆外内存主要用于缓存文件系统数据、网络缓冲区等。因此,即使JVM堆内存被限制为1G,Elasticsearch的总内存使用也可能超过这个值。

另外建议不要修改yml文件里的bootstrap.memory_lock: true,保持默认true的状态。它可以将JVM的物理内存地址锁定,防止操作系统交换出去,从而提高查询速度。文章来源地址https://www.toymoban.com/news/detail-853615.html

到了这里,关于清理Elasticsearch占用的内存和磁盘空间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch集群内存占用高?用这招!

    一、freeze index冻结索引介绍 Elasticsearch为了能够实现高效快速搜索,在内存中维护了一些数据结构,当索引的数量越来越多,那么这些数据结构所占用的内存也会越来越大,这是一个不可忽视的损耗。 在实际的业务开展过程中,我们会发现,有些索引的数据是“热”数据,经

    2024年02月06日
    浏览(38)
  • mac清理磁盘空间软件有哪些 mac清理磁盘空间怎么清理

    随着时间的推移,Mac电脑上的文件会越来越多,很快就会占满磁盘空间。这时候,我们需要一个好的Mac清理磁盘空间软件来释放空间,保持电脑的良好性能。那么,mac清理磁盘空间软件有哪些呢?接下来,我将为你介绍几款常用的软件,以及mac清理磁盘空间怎么清理。 一、

    2024年02月11日
    浏览(47)
  • Elasticsearch磁盘空间爆满及 java_pid*.hprof 处理

    一、问题描述 今天Elasticsearch 服务突然出现问题,发现服务器的磁盘空间满了。同时在es的data目录下发现了大量的java_pid*.hprof 文件占用很大的磁盘空间。 二、问题排查 在服务器上检查发现elasticsearch/data目录下产生类似如下文件: 查阅资料发现产生类似如下文件的原因是:内

    2024年02月11日
    浏览(48)
  • MAC磁盘空间不足怎么清理?MAC清理磁盘空间的五种方法

    MAC磁盘空间不足怎么清理?当我们使用苹果MAC一段时间后,就会有大量的垃圾文件占用磁盘空间,例如系统缓存文件、应用程序缓存文件、备份和重复文件、旧版的应用程序及其部件等,为了不影响电脑的后续使用,我们需要经常清理磁盘空间,下面小编为大家带来了MAC清理

    2024年01月22日
    浏览(72)
  • 终极方案,清理 docker 占用磁盘过大问题, 亲测有效!

            在笔者的工作测试环境中,使用过程中突然出现根磁盘快吃满了(docker也是使用的根池盘的/var/lib/docker), wtf ? 服务用不了?         当然网上找到了一些常规的清除docker 日志文件,清理后但是通过df -hT 查看到overlay 卷还是占有超过70%的盘。通过下图可以知道

    2023年04月08日
    浏览(40)
  • 电脑怎么查看磁盘空间?磁盘不足怎么清理?

    很多用户都会有这样的感觉,随着使用时间越来越长,电脑的性能也在逐渐下降,有两方面的原因:一方面,随着软件的升级,很多软件对硬件要求越来越高;另一方面,系统及软件运行产生的垃圾文件,悄悄捆绑安装的软件大量占用磁盘空间,影响系统性能,那么电脑怎么

    2024年02月10日
    浏览(88)
  • 如何清理 docker 磁盘空间 附讲解(全)

    补充docker知识点,可看我之前的文章:Docker零基础从入门到精通(全) docker 镜像特别容易占空间,稍微不注意可能磁盘爆满 通过 df - h 查看的时候,磁盘已经达到95%: 先用 docker system df 命令查看 再用 docker system prune 清理 (清理命令 谨慎使用,注意作用以及波及范围!!!

    2024年02月01日
    浏览(44)
  • clickhouse日志表占用大量磁盘空间

    sql: SELECT sum(rows) AS 总行数 , formatReadableSize(sum(data_uncompressed_bytes)) AS 原始大小 , formatReadableSize(sum(data_compressed_bytes)) AS 压缩大小 , round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS 压缩率 , table AS 表名 FROM system.parts where database = ‘system’ group by table ; query_log也占用了

    2024年02月11日
    浏览(47)
  • Linux CentOS 服务器清理磁盘空间

    首先根目录下使用[df -ah]命令查询磁盘空间占用情况。 发现[/根目录]下面磁盘占用100% 进入根目录,查询大文件与目录 查看GB以上文件夹目录并且排序,可以使用以下命令: 然后不断执行上面的过程,进入大文件目录,定位到大文件 我这里最终找到是Tomcat下面logs日志占据了20多

    2024年02月05日
    浏览(71)
  • 如何清理docker在var目录下的大量空间占用

    Docker 在 `/var` 目录下可能会产生大量空间占用,主要原因是镜像、容器、数据卷和临时文件的累积。要清理这些资源,你可以使用以下方法: **注意:这些操作会删除你的 Docker 资源,所以在执行前,请确保已备份重要数据。** 1. 删除未使用的 Docker 镜像 运行以下命令删除所

    2024年02月09日
    浏览(84)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包