Windows上Elasticsearch啟動(dòng)報(bào)警告解決方案

我在自己電腦Win10上裝了個(gè)Elasticsearch7.8,可能因?yàn)榘姹具^(guò)高,導(dǎo)致es對(duì)jdk要求也很高,而我電腦上jdk也只是1.8版本的,然后啟動(dòng)的時(shí)候就報(bào)下面的警告:

Warning: with JDK 8 on Windows, Elasticsearch may be unable to derive correct

? ergonomic settings due to a JDK issue (JDK-8074459). Please use a newer

? version of Java.

Warning: MaxDirectMemorySize may have been miscalculated due to JDK-8074459.

? Please use a newer version of Java or set MaxDirectMemorySize explicitly.

這雖然只是個(gè)警告,一般情況下訪(fǎng)問(wèn)es也不會(huì)有什么問(wèn)題,但是我用多線(xiàn)程頻繁訪(fǎng)問(wèn)的時(shí)候就會(huì)報(bào)“遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個(gè)連接”錯(cuò)誤。解決方式就是在配置文件中讓它用自己的jdk,而不是用我們配好的環(huán)境變量的jdk。在bin/elasticsearch-env.bat文件中將if "%JAVA_HOME%" == "" (和它后面的else整個(gè)內(nèi)容注釋掉(es的配置中在每行的前面加rem,我也很奇怪用這么奇怪的注釋方式),然后將if中的內(nèi)容提取出來(lái)就好了。下面是我的配置。

set SCRIPT=%0

rem determine Elasticsearch home; to do this, we strip from the path until we

rem find bin, and then strip bin (there is an assumption here that there is no

rem nested directory under bin also named bin)

for %%I in (%SCRIPT%) do set ES_HOME=%%~dpI

:es_home_loop

for %%I in ("%ES_HOME:~1,-1%") do set DIRNAME=%%~nxI

if not "%DIRNAME%" == "bin" (

? for %%I in ("%ES_HOME%..") do set ES_HOME=%%~dpfI

? goto es_home_loop

)

for %%I in ("%ES_HOME%..") do set ES_HOME=%%~dpfI

rem now set the classpath

set ES_CLASSPATH=!ES_HOME!\lib\*

set HOSTNAME=%COMPUTERNAME%

if not defined ES_PATH_CONF (

? set ES_PATH_CONF=!ES_HOME!\config

)

rem now make ES_PATH_CONF absolute

for %%I in ("%ES_PATH_CONF%..") do set ES_PATH_CONF=%%~dpfI

set ES_DISTRIBUTION_FLAVOR=default

set ES_DISTRIBUTION_TYPE=zip

set ES_BUNDLED_JDK=true

cd /d "%ES_HOME%"

rem now set the path to java, pass "nojava" arg to skip setting JAVA_HOME and JAVA

if "%1" == "nojava" (

? exit /b

)

rem compariing to empty string makes this equivalent to bash -v check on env var

rem and allows to effectively force use of the bundled jdk when launching ES

rem by setting JAVA_HOME=

rem if "%JAVA_HOME%" == "" (

rem? set JAVA="%ES_HOME%\jdk\bin\java.exe"

rem? set JAVA_HOME="%ES_HOME%\jdk"

rem? set JAVA_TYPE=bundled jdk

rem ) else (

rem? set JAVA="%JAVA_HOME%\bin\java.exe"

rem? set JAVA_TYPE=JAVA_HOME

rem )

set JAVA="%ES_HOME%\jdk\bin\java.exe"

set JAVA_HOME="%ES_HOME%\jdk"

set JAVA_TYPE=bundled jdk

if not exist !JAVA! (

? echo "could not find java in !JAVA_TYPE! at !JAVA!" >&2

? exit /b 1

)

rem do not let JAVA_TOOL_OPTIONS slip in (as the JVM does by default)

if defined JAVA_TOOL_OPTIONS (

? echo warning: ignoring JAVA_TOOL_OPTIONS=%JAVA_TOOL_OPTIONS%

? set JAVA_TOOL_OPTIONS=

)

rem JAVA_OPTS is not a built-in JVM mechanism but some people think it is so we

rem warn them that we are not observing the value of %JAVA_OPTS%

if defined JAVA_OPTS (

? (echo|set /p=warning: ignoring JAVA_OPTS=%JAVA_OPTS%; )

? echo pass JVM parameters via ES_JAVA_OPTS

)

rem check the Java version

%JAVA% -cp "%ES_CLASSPATH%" "org.elasticsearch.tools.java_version_checker.JavaVersionChecker" || exit /b 1

如果是linux上也報(bào)這種警告,也在類(lèi)似的配置文件中作相似的修改,我還沒(méi)有部署到linux上,就暫時(shí)不此問(wèn)題的解決方案,需要的朋友可以自己試試。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容