Javaアップグレードのプロセス

トピック作成者:ks-solruserml-bot (2024/09/11 21:44 投稿)
8
OpenOpen

(The bot translated the original post https://lists.apache.org/thread/j5ptl3hs5ssz0h7939fkfsxjx1zcqwjp into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

数ヶ月前にSolrのアップグレードについて質問しました。バージョン8.5から9.3にアップグレードしようとしたところ、ウェブサイト検索にいくつかのエラーが発生し、それを解決できませんでした。そのため、最新の8.xバージョンである8.11にアップグレードすることにしました。

OSのアップグレードは成功し、8.11が8.5と同じ検索結果を返すことに満足しています。ここまでは順調です。

次にJavaを見直しています。現在はopenjdk-8で動作しています。openjdk-11やopenjdk-13にアップグレードしようとしました。このプロセスはUbuntuでは基本的に次のようになります。

apt install openjdk-13-jdk
update-alternatives --list java
update-alternatives --set java /usr/lib/jvm/java-13-openjdk-amd64/bin/java

これを実行すると、Solrが起動しなくなります。ただ待機し、最終的には約2分後に失敗します。そこで次のようにして、

update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

Java 8に戻すと、再び動作します。

新しいJavaでinitスクリプトを再生成しようとしましたが、スクリプトは同一でした。新しいJavaをアクティブにした状態でサーバーを再起動してみましたが、環境の問題である可能性も考えましたが、効果はありませんでした。

何が起こっているのか、何かアイデアはありますか?

Java 8がまだ更新されていることに気づいたので、一番簡単なのはこのままJava 8を使い続けることかもしれません。

Jim

返信投稿者:ks-solruserml-bot (2024/09/11 21:45 投稿)

Solr 8でJava 13を使わないほうがいいという話を聞いたことがあります。それはともかく、参考までに言うと、こちらではJDK 11(Amazon Correttoビルド)で8.11が問題なく動作しています。

Dima

返信投稿者:ks-solruserml-bot (2024/09/11 21:45 投稿)

「約2分間待機した後に失敗する」という部分について、もう少し具体的に教えてもらえますか?コンソールにはどんなメッセージが表示されますか?Solrのログファイルには何が記録されていますか?

-Hoss
http://www.lucidworks.com/

返信投稿者:ks-solruserml-bot (2024/09/11 21:45 投稿)

Chris、指摘ありがとう。最初の投稿にログ情報を含めるべきでした。

Solrのログには何も記録されていません。Solrが起動するところまで進まないと思われます。syslogには次のようなメッセージがあります:

Dec 11 06:35:08 server solr[6822]: Waiting up to 180 seconds to see Solr running on port 8983 [|] #010#010#010#010#010#010 [/]
#010#010#010#010#010#010 [|] #010#010#010#010#010#010 [/]
(これらのメッセージがたくさん削除されています)
010#010#010 [-] #010#010#010#010#010
Dec 11 06:35:08 server solr[6897]: Still not seeing Solr listening on 8983 after 180 seconds!

Ulimitsに関する警告があり、これはJava 8では発生しないようです:

Dec 11 06:30:32 solr-dev solr[6266]: *** [WARN] *** Your open file limit is currently 1024.
Dec 11 06:30:32 solr-dev solr[6266]: It should be set to 65000 to avoid operational disruption.
Dec 11 06:30:32 solr-dev solr[6266]: If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh

でも、これを/etc/defaults/solr.in.shに設定しましたが、効果はありませんでした。

Jim

返信投稿者:ks-solruserml-bot (2024/09/11 21:46 投稿)

Java 13は使用しないでください。これは非LTSリリースであり、非LTSリリースは6ヶ月間しかサポートされません。そのため、そのバージョンは3年以上前にサポートが終了しています — サポートは2020年3月に終了しました。

Java 11は安定した選択肢です。Java 17はSolr 9.xでJava 11よりも少しパフォーマンスが良いようですが、実際に測定したことはありません。現在のLTSリリースはJava 8、11、17、21です。

https://en.wikipedia.org/wiki/Java_version_history

個人的には、Java 17を使ってSolr 8.xを信頼するのは避けるべきだと思います。これは9つの主要なJavaバージョンのジャンプです… ただし、他の人がそれを試しており、問題の報告は見ていません。私はUbuntuでSolr 9.xと共にJava 17を使用しています。

Java 11以降では、ガーベジコレクションをZGCに切り替えるのが良いアイデアだと思います。私の/etc/default/solr.in.shには次の設定があります:

GC_TUNE=" -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent -XX:+AlwaysPreTouch -XX:+UseNUMA "

ちなみに、update-alternativesの代わりにupdate-java-alternativesを使用するべきです。これにより、Javaのすべてのバイナリが更新され、/usr/bin/javaだけではありません。

利用可能なオプションを表示するには:

$ update-java-alternatives -l
java-1.11.0-openjdk-amd64 1111
/usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.17.0-openjdk-amd64 1711
/usr/lib/jvm/java-1.17.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1081
/usr/lib/jvm/java-1.8.0-openjdk-amd64

その後、次のようにして選択します:

update-java-alternatives -s java-1.11.0-openjdk-amd64

SolrがJava 11で起動しない場合は、solr.logとsolr-NNNN-console.logで失敗の理由に関する情報を探してください。

ありがとう、
Shawn

返信投稿者:ks-solruserml-bot (2024/09/11 21:46 投稿)

それはコンソールの出力で、起動スクリプトがポートの立ち上がりを待っているところです。

実際のSolrログファイル(Javaプロセスによって書き込まれるもの)には何と記録されていますか?

https://solr.apache.org/guide/solr/latest/deployment-guide/taking-solr-to-production.html#log-settings

-Hoss
http://www.lucidworks.com/

返信投稿者:ks-solruserml-bot (2024/09/11 21:46 投稿)

少し成功しました。まず、Shawn、update-java-alternativesをググって見つけたことは目から鱗でした!これで問題が解決すると思ったのですが、残念ながらそうではありませんでした。

それで、今日再試行しました。以前にSolrのログに何も気づかなかったので、ログディレクトリ全体を削除して、新しく出てきたものを確認しました。気づかなかったsolr-8983-console.logに手がかりを見つけました。solr.logやさまざまなGCログを見ていたのですが、このログが作成されたことには気づいていませんでした。実際にはこれだけが作成されていました。これにはsolr.in.shの非推奨設定が記載されており、それを削除して再実行することで、最終的には動作しました。各再起動の間に必須の180秒を待ちました。
削除した設定は以下の通りです:

-XX:+PrintGCDetails
UseConcMarkSweepGC
PrintGCApplicationStoppedTime
PrintGCDateStamps
PrintGCTimeStamps
PrintHeapAtGC
PrintTenuringDistribution
UseParNewGC

現在、すべてがJava 11で正常に動作しているようです。しばらくはこれで放置し、再びSolrに取り組む気が起きるまで待つつもりです。Java 13はLTSでないため、使用しないことを理解しました。

ご提案とアドバイスありがとうございました。

Jim

返信投稿者:ks-solruserml-bot (2024/09/11 21:46 投稿)

追記として、削除した設定が重要なものでないか確認するために、solr.in.shのBEFOREとAFTERの設定を投稿します。これらの設定は私にはあまり意味がないので、コメントがあれば歓迎します。

BEFORE

SOLR_HEAP="8000m"

GC_LOG_OPTS="-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime"

GC_TUNE="-XX:NewRatio=3 -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 -XX:+CMSScavengeBeforeRemark -XX:PretenureSizeThreshold=64m -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=50 -XX:CMSMaxAbortablePrecleanTime=6000 -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled"

ENABLE_REMOTE_JMX_OPTS="false"

SOLR_OPTS="$SOLR_OPTS -Xss256k"
SOLR_OPTS="$SOLR_OPTS -Dlog4j2.formatMsgNoLookups=true"

AFTER

SOLR_HEAP="8000m"

GC_LOG_OPTS="-verbose:gc -Xlog:gc*"

GC_TUNE="-XX:NewRatio=3 -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=8 -XX:+UseG1GC -XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 -XX:+CMSScavengeBeforeRemark -XX:PretenureSizeThreshold=64m -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=50 -XX:CMSMaxAbortablePrecleanTime=6000 -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled"

ENABLE_REMOTE_JMX_OPTS="false"

SOLR_OPTS="$SOLR_OPTS -Xss256k"
SOLR_OPTS="$SOLR_OPTS -Dlog4j2.formatMsgNoLookups=true"
返信投稿者:ks-solruserml-bot (2024/09/11 21:47 投稿)

Solrに付属しているsolr.in.shファイルにはGC_LOG_OPTSGC_TUNEは定義されていないため、これらはSolrのインストールを設定した人が追加したものです。

これらの設定を完全に削除し、SolrがGCログとGCチューニングのデフォルト設定を使用するようにしてください。ただし、ZGCに切り替えたい場合は、このスレッドで提供したGC_TUNEを使用することができます。

ありがとう、
Shawn

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?