1. 程式人生 > >ElasticSearch常見問題及解決方法

ElasticSearch常見問題及解決方法

1、問題一:

org.elasticsearch.bootstrap.StartupException:BindTransportException[Failed to bind to [9300]]; nested: BindException[無法指定被請求的地址];

         atorg.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:127)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.cli.Command.main(Command.java:88)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)~[elasticsearch-5.4.1.jar:5.4.1]

Caused by:org.elasticsearch.transport.BindTransportException: Failed to bind to [9300]

         atorg.elasticsearch.transport.TcpTransport.bindToPort(TcpTransport.java:769)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.transport.TcpTransport.bindServer(TcpTransport.java:734)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.transport.netty4.Netty4Transport.doStart(Netty4Transport.java:173)~[?:?]

         atorg.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:69)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.transport.TransportService.doStart(TransportService.java:196)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:69)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.node.Node.start(Node.java:686) ~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:277)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:359)~[elasticsearch-5.4.1.jar:5.4.1]

         atorg.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)~[elasticsearch-5.4.1.jar:5.4.1]

         ...6 more

Caused by: java.net.BindException: 無法指定被請求的地址

         atsun.nio.ch.Net.bind0(Native Method) ~[?:?]

         atsun.nio.ch.Net.bind(Net.java:433) ~[?:?]

         atsun.nio.ch.Net.bind(Net.java:425) ~[?:?]

         atsun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)~[?:?]

         atio.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:128)~[?:?]

         atio.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:554)~[?:?]

         atio.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1258)~[?:?]

         atio.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:501)~[?:?]

         atio.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:486)~[?:?]

         atio.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:980)~[?:?]

         atio.netty.channel.AbstractChannel.bind(AbstractChannel.java:250) ~[?:?]

         atio.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:365) ~[?:?]

         atio.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)~[?:?]

         atio.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403)~[?:?]

         atio.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462) ~[?:?]

         atio.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)~[?:?]

         atjava.lang.Thread.run(Thread.java:748) [?:1.8.0_161]

原因:elasticsearch.yml檔案的引數配置不正確

解決方法:編輯node節點對應的配置檔案,例如:

(1)在命令列輸入:vim /usr/elk/elasticsearch/elasticsearch-master/config/elasticsearch.yml

 (2)開啟檔案後,把檔案中的這兩個地方的IP地址改成ES所在伺服器的IP地址即可。

2.問題二:

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root


原因:因為安全問題elasticsearch不讓用root使用者直接執行,所以要建立新使用者
解決:建立一個單獨的使用者用來執行ElasticSearch

3、問題三:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

原因:普通使用者執行問題
解決:切換到root使用者,編輯/etc/security/limits.conf
     新增 elk hard nofile 65536  
  elk soft nofile 65536 (elk是使用者名稱)

4、問題四:max number of threads [1024] for user [elk] is too low, increase to at least [2048]

原因:普通使用者執行運算元低
解決:切換超級使用者,編輯/etc/security/limits.d/90-nproc.conf

5、問題五:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

原因:作業系統的vm.max_map_count引數設定太小導致的
解決:切換超級使用者,編輯/etc/sysctl.conf
     新增 vm.max_map_count=655360
     儲存退出,執行 sysctl -p

6、問題六 system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

原因:
解決:編輯ES配置檔案elasticsearch.yml
     新增 bootstrap.system_call_filter: false


7、問題七 啟動時,可能會因為非root使用者原因,對一些檔案沒有許可權報異常
解決:chown -R xxx path/file 賦予許可權 (xxx 為使用者名稱,例如elk


8、問題八 如遇埠號佔用問題
netstat -anp | grep 埠    查出程序號 kill -9 pid


9、問題九 如果在終端出現-bash: grunt: command not found
原因:需要建立軟連結
解決: ln -s /usr/elk/node-v6.11.4-linux-x64/bin/grunt(這是grunt快捷方式的路徑) /usr/local/bin/grunt