max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
問題描述
ES啟動報錯。其原因是ES需要的的最小max file descriptors為65535,我們設置的是4096,需要增大max file descriptors的值。
解決方案
調大系統的max file descriptors值
在/etc/security/limits.conf
中新增兩行配置:
* hard nofile 65536
* soft nofile 65536
這里*
代表所有用戶,如果要為指定用戶調整參數,則將*
替換為指定的用戶名。
調整完畢后可查看參數:
$ ulimit -Hn
65536
$ ulimit -Sn
65536
memory locking requested for elasticsearch process but memory is not locked
問題描述
ES啟動報錯。原因是ES進程請求內存鎖定,但內存未鎖定。
解決方案
方案一 關閉bootstrap.memory_lock
在elasticsearch.yml
中配置bootstrap.memory_lock: false
關閉內存鎖。
此方案不推薦使用,關閉內存鎖會影響性能。
方案二 開啟memlock
在/etc/security/limits.conf
中追加配置:
* hard memlock unlimited
* soft memlock unlimited
這里*
代表所有用戶,如果要為指定用戶調整參數,則將*
替換為指定的用戶名。
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
問題描述
ES啟動報錯。系統虛擬內存默認最大映射數為65530,無法滿足ES系統要求,需要調整為262144以上。
解決方案
調大系統虛擬內存最大映射數。
在/etc/sysctl.conf
中追加:
vm.max_map_count = 262144
重新加載系統設置:
sysctl -p
can not run elasticsearch as root
問題描述
使用root用戶啟動報錯
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
···
解決方案
無它,建立一個用戶,專門用來啟動Elasticsearch的,如esuser,相應的系統目錄和數據存儲目錄都賦予esuser賬戶為歸屬者。然后切換到esuser用戶重新啟動es。