首页 > 其他分享 >ElasticSearch之禁用交换分区

ElasticSearch之禁用交换分区

时间:2023-11-24 23:46:52浏览次数:40  
标签:swappiness 禁用 分区 unlimited vm 如下 ElasticSearch swap mlockall

操作系统将进程加载至内存中执行时,对于当前未使用到的内存页,可能会将相关内存页交换至硬盘上,即swap
对于性能敏感、时延敏感的应用程序比如ElasticSearchswap特性会明显影响性能和稳定性,因此最好禁用swap特性。
对于Linux环境,目前有如下手段可以禁用swap特性。

临时关闭swap的方法,执行如下命令:

sudo swapoff -a

本方法不需要重启Linux系统,但系统重启后即失效。

修改/etc/fstab,去掉包含swap的行,这样系统重启后,就不会自动挂载swap相关的分区。

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda8 during installation
UUID=124a4216-e11f-4dfb-9884-ea53ee46c8d8 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda9 during installation
UUID=317d9a34-6d00-4278-bcaa-bcb3b37fc58c none            swap    sw              0       0

修改vm.swappiness的值为1,可以极大的降低进程的内存页被交换至硬盘的概率。

查看Linux系统当前vm.swappiness的值,执行如下命令:

cat /proc/sys/vm/swappiness

输出如下:

20

或者执行如下命令:

sysctl vm.swappiness

输出如下:

vm.swappiness = 20

修改vm.swappiness的值,执行如下命令:

sudo sysctl -w vm.swappiness=30

输出如下:

vm.swappiness = 30

利用Linux系统的mlockall方法,禁止将内存页交换至硬盘。
修改ElasticSearch的配置文件elasticsearch.yml,增加如下参数:

bootstrap.memory_lock: true

修改后需要重启ElasticSearch进程。

检查mlockall是否生效,执行如下命令:

curl -X GET "https://localhost:9200/_nodes?filter_path=**.mlockall&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

执行结果的样例,如下:

{
  "nodes" : {
    "aKgBu7LgS9a6iPYH8n2JPw" : {
      "process" : {
        "mlockall" : false
      }
    }
  }
}

mlockalltrue,说明增加参数后,mlockall如预期生效。
mlockallfalse,说明增加参数后,mlockall未能生效,原因则可能是运行ElasticSearch的用户缺少锁定内存的权限。

检查当前用户的权限,执行如下命令:

sudo sh -c "ulimit -a"

执行结果的样例,如下:

time(seconds)        unlimited
file(blocks)         unlimited
data(kbytes)         unlimited
stack(kbytes)        8192
coredump(blocks)     0
memory(kbytes)       unlimited
locked memory(kbytes) 65536
process              15172
nofiles              1024
vmemory(kbytes)      unlimited
locks                unlimited
rtprio               0

假如判定和权限相关,则有如下解决方法。
在启动ElasticSearch前,使用root用户增加权限,命令样例如下:

ulimit -l unlimited
./bin/elasticsearch

或者修改/etc/security/limits.conf,增加如下配置。

# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

相关资料

标签:swappiness,禁用,分区,unlimited,vm,如下,ElasticSearch,swap,mlockall
From: https://www.cnblogs.com/jackieathome/p/17855035.html

相关文章

  • 磁盘分区和挂载
    1.Linux分区1.1.原理介绍(1)Linux无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构。Linux中每个分区都是用来组成整个文件系统的一部分。(2)Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的......
  • find 查找.tar结尾的文件 unzip 批量解压 sed常用 监控linux磁盘根分区 统计 Nginx 访
    1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录:find.-name“*.tar”-execmv{}./backup/;❝注解:find–name主要用于查找某个文件名字,-exec、xargs可以用来承接前面的结果,然后将要执行的动作,一般跟find在一起用的很多,find使用我们可以延伸-mtime查找修改......
  • Java 远程调用连接本地ElasticSearch服务并进行操作
    简单几步,结合Cpolar内网穿透工具实现Java远程连接操作本地ElasticsearchCpolar内网穿透提供了更高的安全性和隐私保护,通过使用加密通信通道,Cpolar技术可以确保数据传输的安全性,这为用户和团队提供了更可靠的保护,使他们能够放心地处理和存储敏感的工作内容。 1.Windows安......
  • ElasticSearch之cat count API
    读取当前存储的记录的数量。命令样例如下:curl-XGET"https://localhost:9200/_cat/count?v=true&pretty"--cacert$ES_HOME/config/certs/http_ca.crt-u"elastic:ohCxPH=QBE+s5=*lo7F9"执行结果输出如下:epochtimestampcount170074840914:06:490查看帮助,命......
  • ElasticSearch之配置
    ElasticSearch主要的配置文件,如下:elasticsearch.yml,ElasticSearch的相关参数。jvm.options,JVM的相关参数。log4j2.properties,日志的相关参数。默认情况下,ElasticSearch从$ES_HOME/config目录下读取上述配置文件。启动ElasticSearch时可以使用环境变量ES_PATH_CONF,指定配置......
  • ElasticSearch之cat component templates API
    命令样例如下:curl-XGET"https://localhost:9200/_cat/component_templates?v=true&pretty"--cacert$ES_HOME/config/certs/http_ca.crt-u"elastic:ohCxPH=QBE+s5=*lo7F9"执行结果输出如下:nameversionalias_countm......
  • ElasticSearch之cat anomaly detectors API
    curl-XGET"https://localhost:9200/_cat/ml/anomaly_detectors?v=true&pretty"--cacert$ES_HOME/config/certs/http_ca.crt-u"elastic:ohCxPH=QBE+s5=*lo7F9"执行结果输出如下:curl-XGET"https://localhost:9200/_cat/ml/anomaly_detectors......
  • ElasticSearch
    环境准备1.安装ElasticSearch#创建网络dockernetworkcreatees-netdockernetworkls#拉取镜像dockerpullelasticsearch:7.12.1#创建容器dockerrun-d\--namees\-e"ES_JAVA_OPTS=-Xms512m-Xmx512m"\-e"discovery.type=single-node"\-ves-d......
  • Flink源码解析(六)——数据分区解析
    一、数据分区概念对分布式计算引擎来说,数据分区的主要作用是将现环节的数据进行切分,交给下游位于不同物理节点上的Task计算。二、Flink数据分区接口体系1、顶层接口ChannelSelector(1).setup()方法设置下游算子的通道数量。从该接口中可以看到,算子里的每一个分区器都知道下游......
  • Docker中使用elasticsearch
    Docker中使用elasticsearch1、docker拉取elasticsearch:7.17镜像这里我们拉取7.17.10版本:dockerpullelasticsearch:7.17.102、创建自己的配置文件并写入基础数据供后续挂载后直接启动使用【非必选,在不指定挂载配置文件启动的情况下可不设置】创建文件夹后,新建一个自己的e......