【ElasticSearch系列(三)】性能优化之bootstrap.memory_lock: true

本文介绍如何通过设置elasticsearch.yml中的bootstrap.memory_lock参数来避免Elasticsearch使用swap交换分区,减少IOPS,并提供系统配置文件的修改步骤及针对小系统的ES优化建议。

es中的/home/es/elasticsearch-6.3.0/config/elasticsearch.yml配置文件,如果bootstrap.memory_lock这项使用默认配置,会导致硬盘频繁读,IOPS变高。

因此bootstrap.memory_lock需要设置成bootstrap.memory_lock: true
在这里插入图片描述

这个配置的意义:锁定物理内存地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致IOPS变高。

设置好后,启动es会报错:

ERROR: [1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked

解决办法:

需要设置下系统配置文件,首先要切换到root用户,接着做以下修改:

1、修改/etc/security/limits.conf

文件最后添加以下内容:

* soft nofile 65536

* hard nofile 65536

* soft nproc 32000

* hard nproc 32000

* hard memlock unlimited

* soft memlock unlimited

2、修改/etc/systemd/system.conf

分别修改以下内容:

DefaultLimitNOFILE=65536

DefaultLimitNPROC=32000

DefaultLimitMEMLOCK=infinity

3、执行以下操作,立即生效

/bin/systemctl daemon-reload

对于小系统应用es的优化和建议:

  • 建议用SSD,提高性能;
  • 新建索引的时候,分片设置成1,备份设置成0,能有效的降低IOPS;

可以参考以下配置:

put http://localhost:9200/test/
{
“settings”: {
“number_of_shards”: 1,
“number_of_replicas”: 0,
“index.analysis.analyzer.default.type”: “ik_max_word”
},
“mappings”: {
“my”: {
“properties”: {
“id”: {
“type”: “long”
},
“name”: {
“type”: “text”
},
“content”: {
“type”: “text”
}
}
}
}
}

请移除邮件后完整的发给我 我直接复制进去 services: onlyoffice-mysql-server: container_name: onlyoffice-mysql-server image: mysql:8.0.29 environment: - MYSQL_ROOT_PASSWORD=my-secret-pw networks: - onlyoffice stdin_open: true tty: true restart: always volumes: - ./config/mysql/conf.d:/etc/mysql/conf.d - ./config/mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d - mysql_data:/var/lib/mysql onlyoffice-community-server: container_name: onlyoffice-community-server image: onlyoffice/communityserver:12.6.0.1900 depends_on: - onlyoffice-mysql-server - onlyoffice-document-server - onlyoffice-mail-server - onlyoffice-elasticsearch environment: - ONLYOFFICE_CORE_MACHINEKEY=core_secret - CONTROL_PANEL_PORT_80_TCP=80 - CONTROL_PANEL_PORT_80_TCP_ADDR=onlyoffice-control-panel - DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server - DOCUMENT_SERVER_JWT_ENABLED=true - DOCUMENT_SERVER_JWT_SECRET=jwt_secret - DOCUMENT_SERVER_JWT_HEADER=AuthorizationJwt - MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw - MYSQL_SERVER_DB_NAME=onlyoffice - MYSQL_SERVER_HOST=onlyoffice-mysql-server - MYSQL_SERVER_USER=onlyoffice_user - MYSQL_SERVER_PASS=onlyoffice_pass - MAIL_SERVER_API_PORT=8081 - MAIL_SERVER_API_HOST=onlyoffice-mail-server - MAIL_SERVER_DB_HOST=onlyoffice-mysql-server - MAIL_SERVER_DB_PORT=3306 - MAIL_SERVER_DB_NAME=onlyoffice_mailserver - MAIL_SERVER_DB_USER=mail_admin - MAIL_SERVER_DB_PASS=Isadmin123 - ELASTICSEARCH_SERVER_HOST=onlyoffice-elasticsearch - ELASTICSEARCH_SERVER_HTTPPORT=9200 networks: - onlyoffice ports: - '80:80' - '443:443' - '5222:5222' stdin_open: true tty: true restart: always privileged: true cgroup: host volumes: - community_data:/var/www/onlyoffice/Data - community_log:/var/log/onlyoffice - community_letsencrypt:/etc/letsencrypt - document_data:/var/www/onlyoffice/DocumentServerData - /sys/fs/cgroup:/sys/fs/cgroup:rw - ./certs:/var/www/onlyoffice/Data/certs onlyoffice-elasticsearch: image: onlyoffice/elasticsearch:7.16.3 container_name: onlyoffice-elasticsearch restart: always environment: - discovery.type=single-node - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms1g -Xmx1g -Dlog4j2.formatMsgNoLookups=true" - "indices.fielddata.cache.size=30%" - "indices.memory.index_buffer_size=30%" - "ingest.geoip.downloader.enabled=false" networks: - onlyoffice ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65535 hard: 65535 volumes: - es_data:/usr/share/elasticsearch/data expose: - "9200" - "9300" onlyoffice-document-server: container_name: onlyoffice-document-server image: onlyoffice/documentserver:8.1 stdin_open: true tty: true restart: always environment: - JWT_ENABLED=true - JWT_SECRET=jwt_secret - JWT_HEADER=AuthorizationJwt networks: - onlyoffice expose: - '80' - '443' volumes: - document_data:/var/www/onlyoffice/Data - document_log:/var/log/onlyoffice - ./document_fonts:/usr/share/fonts/truetype/custom - document_forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten onlyoffice-mail-server: container_name: onlyoffice-mail-server image: onlyoffice/mailserver:1.6.75 depends_on: - onlyoffice-mysql-server hostname: ${MAIL_SERVER_HOSTNAME} environment: - MYSQL_SERVER=onlyoffice-mysql-server - MYSQL_SERVER_PORT=3306 - MYSQL_ROOT_USER=mail_admin - MYSQL_ROOT_PASSWD=Isadmin123 - MYSQL_SERVER_DB_NAME=onlyoffice_mailserver networks: - onlyoffice restart: always privileged: true ports: ['25:25','143:143','587:587'] stdin_open: true tty: true expose: - '8081' - '3306' volumes: - mail_data:/var/vmail - mail_certs:/etc/pki/tls/mailserver - mail_log:/var/log onlyoffice-control-panel: container_name: onlyoffice-control-panel depends_on: - onlyoffice-document-server - onlyoffice-mail-server - onlyoffice-community-server image: onlyoffice/controlpanel:3.5.2.530 environment: - ONLYOFFICE_CORE_MACHINEKEY=core_secret expose: - '80' - '443' restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - controlpanel_data:/var/www/onlyoffice/Data - controlpanel_log:/var/log/onlyoffice networks: - onlyoffice stdin_open: true tty: true networks: onlyoffice: driver: 'bridge' volumes: mail_data: mail_certs: mail_log: mail_mysql: document_data: document_log: document_forgotten: community_mysql: community_data: community_log: community_letsencrypt: controlpanel_data: controlpanel_log: mysql_data: es_data:
07-21
uncaught exception in thread [main] java.lang.IllegalArgumentException: unknown setting [X-Packhttp.cors.enabled] did you mean [http.cors.enabled]? at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:561) at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:507) at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:477) at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:447) at org.elasticsearch.common.settings.SettingsModule.<init>(SettingsModule.java:137) at org.elasticsearch.node.Node.<init>(Node.java:502) at org.elasticsearch.node.Node.<init>(Node.java:309) at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:234) at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:234) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:434) at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:166) at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:157) at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77) at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112) at org.elasticsearch.cli.Command.main(Command.java:77) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:122) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) For complete error details, refer to the log at /root/elasticsearch-7.17.0/logs/my-application.log
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和光同其尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值