日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Elasticsearch 参考指南(重要的系统配置)

發布時間:2025/6/16 windows 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch 参考指南(重要的系统配置) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

重要的系統配置

理想情況下,Elasticsearch應該在服務器上單獨運行,并使用所有可用的資源,為了做到這一點,你需要配置你的操作系統,以允許運行Elasticsearch的用戶訪問默認允許的更多資源。

在進行生產之前,必須考慮以下設置。

開發模式vs生產模式

在默認情況下,Elasticsearch假定你在開發模式下工作,如果上面的任何設置沒有正確配置,警告將會寫入到日志文件,但是你可以啟動和運行你的Elasticsearch節點。

只要你配置一個網絡設置,比如network.host,Elasticsearch假定你正在轉向生產,并將上述警告升級為異常,這些異常將阻止你的Elasticsearch節點啟動,這是一個重要的安全措施,以確保你不會因為配置錯誤的服務器而丟失數據。

配置系統設置

在哪里配置系統設置取決于你使用哪一個包來安裝Elasticsearch,以及你正在使用的操作系統。

當使用.zip或.tar.gz包時,系統設置可配置為:

  • 使用ulimit臨時更改配置
  • 在/etc/security/limits.conf中持久性更改配置

當使用RPM或Debian包時,大多數系統設置都是在系統配置文件中設置的,但是,使用systemd的系統需要在systemd配置文件中指定系統限制。

ulimit

在Linux系統上,ulimit可以用于臨時更改資源限制,在切換到要運行Elasticsearch的用戶之前,限制通常需要root身份設置。例如,要將打開文件句柄的數量(ulimit -n`)設置為65,536,你可以執行以下操作:

sudo su ulimit -n 65536 su elasticsearch
  • 切換到root身份
  • 更改打開文件的最大數量
  • 切換到elasticsearch用戶啟動Elasticsearch

新限制僅在當前會話期間適用,你可以用ulimit -a查詢所有當前應用的限制。

/etc/security/limits.conf

在Linux系統上,可以通過編輯/etc/security/limits.conf文件來為特定用戶設置持久性限制配置,要將用戶打開的文件的最大數量設置為65,536,請在limits.conf文件中添加以下一行:

elasticsearch - nofile 65536

這個更改只會在下次elasticsearch用戶打開一個新會話時生效。

Ubuntu 和 limits.conf
Ubuntu忽略了使用init.d啟動的進程的limits.conf文件,為了啟用limits.conf文件,編輯/etc/pam.d/su并且取消下面行的注釋: # session required pam_limits.so

Sysconfig 文件

當使用RPM或Debian包時,系統設置和環境變量可以在系統配置文件中指定,它們位于:

  • RPM:/etc/sysconfig/elasticsearch
  • Debian:/etc/default/elasticsearch

然而,對于使用systemd的系統,系統限制需要通過systemd來指定。

Systemd 配置

當在使用systemd的系統上使用RPM或Debian包時,必須通過systemd指定系統限制。

systemd服務文件(/usr/lib/systemd/system/elasticsearch.service)包含默認的應用限制。

要覆蓋它們,添加一個名為etc/systemd/system/elasticsearch.service.d/override.conf的文件(或者,你可以運行sudo systemctl edit elasticsearch,它在默認編輯器中自動打開文件),在此文件中設置任何更改,例如:

[Service] LimitMEMLOCK=infinity

完成后,運行以下命令重新加載單元:

sudo systemctl daemon-reload

禁用swapping

大多數操作系統嘗試使用盡可能多的內存用于文件系統緩存,并急切地交換未使用的應用程序內存,這可能導致JVM堆的某些部分甚至可執行頁面被交換到磁盤。

交換對性能、節點穩定性都非常不利,應該不惜一切代價避免交換,它可以導致垃圾收集持續幾分鐘而不是幾毫秒,還可以導致節點響應緩慢,甚至斷開與集群的連接,在彈性分布式系統中,它更有效的讓操作系統殺死節點。

禁用交換有三種方法,首選的選項是完全禁用交換,如果這不是一個選項,是否選擇最小化的swappiness還是內存鎖定取決于你的環境。

禁用所有交換文件

通常,Elasticsearch是一個容器上的唯一服務,并且它的內存使用由JVM選項控制,應該不需要啟用交換。

在Linux系統上,可以運行以下命令暫時禁用交換:

sudo swapoff -a

要永久禁用它,你需要編輯/etc/fstab文件,并注釋掉任何包含單詞swap的行。

在Windows上,可以通過完全禁用分頁文件來實現等效功能,通過System Properties → Advanced → Performance → Advanced → Virtual memory。

配置 swappiness

Linux系統上的另一個可用選項是確保sysctl值vm.swappiness設置為1,這減少了內核交換的趨勢,在正常情況下不應該引起交換,同時仍然允許整個系統在緊急情況下交換。

啟用 bootstrap.memory_lock

另一種選擇是在Linux/Unix系統上使用mlockall,或者在Windows上使用VirtualLock,嘗試將進程地址空間鎖定到RAM中,以防止任何Elasticsearch內存被交換出去,這可以通過向config/elasticsearch.yml文件中添加這一行來實現:

bootstrap.memory_lock: true mlockall可能會導致JVM或shell會話退出,如果它試圖分配超過可用內存的內存!

在啟動Elasticsearch之后,通過檢查該請求的輸出中的mlockall的值,你可以看到是否成功應用了此設置:

GET _nodes?filter_path=**.mlockall

如果你看到mlockall為false,那么這意味著mlockall請求失敗了,你還將看到日志中包含更多信息Unable to lock JVM Memory詞語的行。

在Linux/Unix系統上,最可能的原因是運行Elasticsearch的用戶沒有鎖內存的權限,這可以被授予如下:

.zip和.tar.gz
  • 在啟動Elasticsearch之前作為root身份設置ulimit -l unlimited,或在/etc/security/limit.conf中將memlock設置為unlimited。
RPM和Debian
  • 在系統配置文件中將MAX_LOCKED_MEMORY設置為unlimited(或參閱下面使用systemd的系統)。
使用systemd的系統
  • 在systemd配置中將LimitMEMLOCK設置為infinity。

mlockall失敗的另一個可能原因是臨時目錄(通常是/tmp)與noexec選項一起掛載,這可以通過使用ES_JAVA_OPTS環境變量指定一個新的臨時目錄來解決:

export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir" ./bin/elasticsearch

或者在jvm.options配置文件中設置這個JVM標志。

文件描述符

這只適用于Linux和macOS,如果在Windows上運行Elasticsearch,則可以被安全地忽略,在Windows上,JVM使用的API僅限于可用資源。

Elasticsearch使用大量的文件描述符或文件句柄,耗盡文件描述符可能是災難性的,并且很可能導致數據丟失,確保將運行Elasticsearch的用戶打開的文件描述符的數量限制增加到65,536或更高。

對于.zip和.tar.gz包,在啟動Elasticsearch之前作為root身份設置ulimit -n 65536,或在/etc/security/limits.conf中設置nofile為65536。

在macOS上,你還必須將JVM選項-XX:-MaxFDLimit傳遞給Elasticsearch,以便使用更高的文件描述符限制。

RPM和Debian軟件包默認文件描述符的最大數量為65536,不需要進一步配置。

你可以使用節點Stats API檢查為每個節點配置的max_file_descriptors,使用:

GET _nodes/stats/process?filter_path=**.max_file_descriptors

虛擬內存

Elasticsearch默認使用mmapfs目錄存儲索引,mmap計數的默認操作系統限制可能太低,這可能導致內存不足異常。

在Linux上,可以通過以root身份運行以下命令來增加限制:

sysctl -w vm.max_map_count=262144

要永久設置此值,請更新在/etc/sysctl.conf中的vm.max_map_count設置,要驗證重新引導后的效果,請運行sysctl vm.max_map_count。

RPM和Debian包將自動配置此設置,不需要進一步的配置。

線程數

Elasticsearch為不同類型的操作使用許多線程池,重要的是,它能夠在需要時創建新的線程,確保Elasticsearch用戶能夠創建的線程數至少是4096個。

這可以通過在啟動Elasticsearch之前作為root身份設置ulimit -u 4096,或者在/etc/security/limit.conf中將nproc設置為4096來實現。

當作為服務在systemd下運行時,包發行版將為Elasticsearch進程自動配置線程數,不需要額外的配置。

DNS緩存設置

Elasticsearch運行時有一個安全管理器,有了安全管理器,JVM默認無限期地緩存積極的主機名解析。如果你的Elasticsearch節點在DNS解析隨時間變化的環境中依賴于DNS(例如,節點到節點的發現),那么你可能需要修改默認的JVM行為,這可以通過添加networkaddress.cache.ttl=<timeout>到你的Java安全策略來修改。任何未能解析的主機將被記錄,還要注意,在Java安全管理器就緒后,JVM默認緩存負主機名解析時間為10秒,這可以通過添加networkaddress.cache.ttl=<timeout>到你的Java安全策略來修改。


上一篇:重要的Elasticsearch配置

下一篇:引導檢查

總結

以上是生活随笔為你收集整理的Elasticsearch 参考指南(重要的系统配置)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。