Elasticsearch官檔翻譯——2.1 配置

配置

環(huán)境變量

Elasticsearch會使用腳本中內(nèi)置的JAVA_OPTS變量值作為JVM啟動參數(shù)栏账,最重要參數(shù)-Xmx,它控制進程最大的堆內(nèi)存虾宇,-Xms盖奈,控制進程分配最小堆內(nèi)存(通常來說內(nèi)存分配越多越好)茬故。
通常來說绽昏,推薦做法是不改變JAVA_OPTS變量鸳玩,而使用ES_JAVA_OPTS來改變JVM參數(shù)配置。
ES_HEAP_SIZE參數(shù)用來配置Java為ES進程分配的堆內(nèi)存缩宜,最大最小值是一樣的,當然也可以通過指定的參數(shù)分別設(shè)置甥温,最小最大分別是 ES_MIN_MEM(默認256M)和ES_MAX_MEM(默認是1G)脓恕。
譯者批注:通常建議最大最小內(nèi)存設(shè)置成一樣的,因為通常ES集群所在服務(wù)器資源盡可能都是提供給集群使用的窿侈,所以資源管夠炼幔,而設(shè)置不同的最大最小值,會產(chǎn)生內(nèi)存擴容導(dǎo)致過多開銷
建議將最大值最小值設(shè)置一樣史简,并且打開(mlockall)
譯者批注:mlockall這個參數(shù)可以防止進程進行swap內(nèi)存交換乃秀,內(nèi)存交換效率很低,畢竟要讀寫磁盤圆兵。詳細原因可以看這里:把bootstrap.mlockall設(shè)為true

系統(tǒng)配置

文件描述符
確保增大你機器(或者運行ES的用戶)的最大文件打開數(shù)跺讯,推薦設(shè)置為32K或64K。
為了測試一個進程的最大文件打開數(shù)殉农,啟動時配置參數(shù)-Des.max-open-filestrue刀脏。這樣系統(tǒng)啟動時就會打印最大文件打開數(shù)。
另外超凳,你也可以通過解析下面API的結(jié)果中的max_file_descriptors參數(shù)獲取每個節(jié)點的最大文件打開數(shù):

curl localhost:9200/_nodes/stats/process?pretty

虛擬內(nèi)存
Elasticsearch默認使用mmaps / niofs混合的目錄存儲類型存儲索引愈污。默認的操作系統(tǒng)限制mmaps(內(nèi)存映射模式)中的虛擬地址空間限制太小了,可能會導(dǎo)致內(nèi)存溢出轮傍,在Linux上暂雹,你可以使用root用戶通過如下命令擴大限制:

sysctl -w vm.max_map_count=262144

如果想要永久改變這個參數(shù)的花,修改配置文件/etc/sysctl.conf中的vm.max_map_count這項配置创夜。

注意:如果你是用安裝包安裝ES(.deb或rpm)杭跪,這個配置會自動改變,你可以使用命令sysctl vm.max_map_count 來校驗驰吓。

內(nèi)存配置
大多數(shù)操作系統(tǒng)會盡可能多的使用內(nèi)存給文件系統(tǒng)緩存并迫切的交換(后稱swap)無用的應(yīng)用內(nèi)存到磁盤涧尿,這有可能導(dǎo)致Elasticsearch進程被swap到磁盤,swap十分消耗性能并且影響節(jié)點的穩(wěn)定性檬贰,因此要不惜一切代價避免它發(fā)生姑廉。
你有三種選擇:

  • 禁用swap
    簡單粗暴的禁用swap,通常Elasticsearch作為一個服務(wù)運行在沙箱環(huán)境中偎蘸,其內(nèi)存通過系統(tǒng)變量ES_HEAP_SIZE來控制庄蹋,因此swap不應(yīng)該啟用瞬内。
    Linux系統(tǒng)中,你可以通過命令sudo swapoff -a來關(guān)閉限书,如果想永久關(guān)閉虫蝶,需要修改配置文件/etc/fstab并找到注釋中包括swap的那行。
    Windows下倦西,你可以完全禁用分頁文件能真,設(shè)置方法:我的電腦右鍵屬性->高級系統(tǒng)設(shè)置->高級/性能,點擊設(shè)置->高級->虛擬內(nèi)存扰柠,點擊更改->選擇無分頁文件粉铐。
  • 配置swappiness
    第二個選擇就是確保sysctl的配置vm.swappiness設(shè)置為0偶垮。這樣能夠降低內(nèi)核的swap頻率朵锣,正常情況下是不會產(chǎn)生swap的,當然系統(tǒng)在緊急情況下還是會進行swap迫摔。

注意:在內(nèi)核版本3.5-rc1及以上劝枣,vm.swappiness設(shè)置為0的時候汤踏,觸發(fā)OOM則會殺掉進程而不是進行swap,緊急情況下你需要設(shè)置該配置為1來確保swap是能夠執(zhí)行的舔腾。

  • mlockall
    第三個選擇是在Linux/Unix使用mlockall溪胶,Windows使用 VirtualLock,能夠?qū)⑦M程地址空間鎖在內(nèi)存中稳诚,防止Elasticsearch進程內(nèi)存被swap出去哗脖,可以通過在配置文件elasticsearch.yml中加入下面的配置:

bootstrap.mlockall: true

啟動后,你可以通過檢驗下面這個命令的返回結(jié)果中的mlockall值來看配置是否成功:

curl http://localhost:9200/_nodes/process?pretty

如果你發(fā)現(xiàn)mlockall的值是false扳还,說明配置失敗了才避,最有可能的原因是在Linux/Unix系統(tǒng)中啟動ES的用戶沒有權(quán)限鎖住內(nèi)存,你可以在啟動前普办,通過root用戶執(zhí)行ulimit -l unlimited來授權(quán)工扎。

另一個原因可能是臨時文件目錄(Linux下通常是/tmp)掛載時指定了noexec選項,你可以在啟動ES的時候指定新的臨時目錄來解決:

./bin/elasticsearch -Djna.tmpdir=/path/to/new/dir

注意:啟用mlockall衔蹲,如果嘗試申請超過可用內(nèi)存大小的內(nèi)存,可能會導(dǎo)致JVM或shell 回話退出呈础。

Elasticsearch配置

elasticsearch的配置文件在ES_HOME/config目錄下舆驶,目錄中有兩個文件,elasticsearch.yml用來配置ES的不同模塊而钞,logging.yml用來配置ES日志相關(guān)設(shè)置沙廉。
配置風格是YAML,下面我們來一個示例臼节,修改所有網(wǎng)絡(luò)模塊綁定的地址信息珊皿,改為如下:

network.host: 10.0.0.4

譯者批注:格式按照默認配置文件來即可巨税,官網(wǎng)的yaml配置風格和我是用的略有不同草添,這里我直接使用默認的配置文件中的注釋demo

目錄

生產(chǎn)環(huán)境使用远寸,我們肯定需要修改data和log的存放目錄:

path.data: /var/data/elasticsearch
path.logs: /var/log/elasticsearch

譯者批注:data目錄可以寫多個肆资,通過逗號分隔郑原,實現(xiàn)磁盤陣列颤专,把數(shù)據(jù)寫到多個磁盤上栖秕,降低讀寫鎖的開銷晓避。不過目前譯者沒有這么實踐過暑塑。

集群名

別忘了給你的集群命名事格,用來使節(jié)點發(fā)現(xiàn)并自動加入集群驹愚。

cluster.name: <NAME OF YOUR CLUSTER>

確保你的集群名不會在不同環(huán)境復(fù)用逢捺,否則可能會導(dǎo)致節(jié)點加入錯誤的集群而出錯劫瞳。例如你可以使用 logging-dev,logging-stage志于,logging-prod表示開發(fā)集群蕊退,預(yù)發(fā)布(譯者公司稱作沙箱)集群和生產(chǎn)集群瓤荔。

節(jié)點名

也許你也需要修改節(jié)點名稱输硝,就像主機名一樣点把。默認情況下節(jié)點啟動時會從3000個漫威人物名字中隨機選取一個。

node.name: <NAME OF YOUR NODE>

譯者批注:推薦命名用編號區(qū)分方便管理維護

機器的主機名可以通過系統(tǒng)變量 HOSTNAME獲取褒翰,如果你的機器只運行集群中的一個節(jié)點优训,可以設(shè)置節(jié)點名為主機名揣非,使用標簽 ${...}早敬。

node.name: ${HOSTNAME}

譯者批注:這種配置方式極不推薦搁嗓,不利于管理,風險高棍矛,把它當做一個trick測試玩好了够委。除非你做了一些安全或權(quán)限的插件茁帽,用到輸入密碼這種配置潘拨。

ES內(nèi)部在處理這些配置的時候都會使用“ namespaced”壓縮處理(譯者批注:也就是譯者現(xiàn)在為大家展示的這種風格)铁追。你也可以使用JSON風格的配置琅束,配置文件命名為:elasticsearch.json就行了:
Code style

{
    "network" : {
        "host" : "10.0.0.4"
    }
}

也就是說你可以很輕松的通過外部配置,使用ES_JAVA_OPTS或者啟動時參數(shù)進行配置艾船,例如:

./elasticsearch -Des.network.host=10.0.0.4

另外丽声,如果你不希望存儲你的配置,還可以使用通配符的方式在啟動ES時從前臺傳值,使用${prompt.text}${prompt.secret}配置徒坡,前者控制臺輸入顯示明文喇完,后者則不顯示锦溪,示例如下:

node.name: ${prompt.text}

啟動ES后防楷,會提示你輸入?yún)?shù)值,如下:

Enter value for [node.name]:

如果${prompt.text}${prompt.secret}已經(jīng)存在于配置中亿昏,或者你使用后臺啟動ES,則這兩個配置不會起作用彤断。

索引配置

集群中創(chuàng)建的索引擁有它自己的配置宰衙,例如,以下創(chuàng)建索引的配置設(shè)置了刷新間隔為5s,而沒有使用默認的刷新間隔(可以使用YAML或JSON格式):

$ curl -XPUT http://localhost:9200/kimchy/ -d
'
index:
refresh_interval: 5s
'

索引級別的配置也可以用于節(jié)點級別的配置,比如剛才的配置我們也可以在elasticsearch.yml中設(shè)置:

index.refresh_interval: 5s

就是說在特定節(jié)點上創(chuàng)建的每個索引都將使用5s的刷新間隔,除非創(chuàng)建索引時設(shè)置它。也可以說,索引級別的配置可以覆蓋節(jié)點級別的配置掸掏。

所有的配置信息都可以在索引模塊找到步脓。

日志配置

elasticsearch內(nèi)部使用log4j日志系統(tǒng)仍侥,開箱即用或颊,并使用YAML配置風格簡化log4j的配置醉顽,配置文件是conf/logging.yml,同樣JSON風格的配置文件也支持平挑。多個配置文件也是支持的游添,它們會被整合到一起,前提是文件名要以logging.開頭通熄,并以支持的后綴結(jié)尾(目前可以是.yml, .yaml, .json.properties)唆涝。日志器包括Java包名和相應(yīng)的日志級別,你可以省略org.elasticsearch前綴唇辨。Appender部分包括日志目的地廊酣。更多地自定義日志配置和appender類型請看 log4j documentation
額外的Appender還有 log4j-extras
提供的其他日志類也是支持的助泽,開箱即用啰扛。

過期日志

除了常規(guī)日志,ES允許你啟動過期日志記錄嗡贺。例如如果你要遷移某些功能隐解,需要你提前確定。默認的過期日志是禁用的诫睬,你可以通過如下配置啟用:

deprecation: DEBUG, deprecation_log_file

這將會每天在你的日志目錄創(chuàng)建滾動日志煞茫,經(jīng)常檢查

上一節(jié):Elasticsearch官檔翻譯——2 設(shè)置

下一節(jié):Elasticsearch官檔翻譯——2.2 在Linux上啟動服務(wù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子续徽,更是在濱河造成了極大的恐慌蚓曼,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钦扭,死亡現(xiàn)場離奇詭異纫版,居然都是意外死亡,警方通過查閱死者的電腦和手機客情,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門其弊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人膀斋,你說我怎么就攤上這事梭伐。” “怎么了仰担?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵糊识,是天一觀的道長。 經(jīng)常有香客問我摔蓝,道長赂苗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任项鬼,我火速辦了婚禮哑梳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绘盟。我一直安慰自己鸠真,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布龄毡。 她就那樣靜靜地躺著吠卷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沦零。 梳的紋絲不亂的頭發(fā)上祭隔,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音路操,去河邊找鬼疾渴。 笑死,一個胖子當著我的面吹牛屯仗,可吹牛的內(nèi)容都是我干的搞坝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼魁袜,長吁一口氣:“原來是場噩夢啊……” “哼桩撮!你這毒婦竟也來了敦第?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤店量,失蹤者是張志新(化名)和其女友劉穎芜果,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體融师,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡右钾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诬滩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霹粥。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖疼鸟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庙曙,我是刑警寧澤空镜,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站捌朴,受9級特大地震影響吴攒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砂蔽,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一洼怔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧左驾,春花似錦镣隶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帆吻,卻和暖如春域那,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猜煮。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工次员, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人王带。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓淑蔚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辫秧。 傳聞我的和親對象是個殘疾皇子束倍,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容